Your SlideShare is downloading. ×
0
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Clase 11   continuamos con formularios
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Clase 11 continuamos con formularios

386

Published on

www.hydrascs.com

www.hydrascs.com

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
386
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Continuamos con Formularios Realizada por: Christian Aquino |@cj_aquino Diego Ramirez |@thedarsideofit Gonzalo Alonso |@GonzaloAlonsoD Diego Barros |@Inmzombie Para: Hydras C&S |@hydras_cs Basada en Libro Symfony 2 en español Nacho Pacheco y The Book
  • 2. Primero un repaso
  • 3. Tematizando formularios Se puede personalizar cómo se reproduce cada parte de un formulario. Se puede cambiar la forma en que se dibuja cada «fila» del formulario, cambiar el formato que sirve para reproducir errores, e incluso personalizar la forma en que se debe reproducir una etiqueta textarea. Nada está fuera de límites, y puedes usar diferentes personalizaciones en diferentes lugares. Symfony utiliza plantillas para reproducir todas y cada una de las partes de un formulario, como las etiquetas label, etiquetas input, mensajes de error y todo lo demás. En Twig, cada «fragmento» del formulario está representado por un bloque Twig. Para personalizar alguna parte de cómo se reproduce un formulario, sólo hay que reemplazar el bloque adecuado. En PHP, cada «fragmento» del formulario se reproduce vía un archivo de plantilla individual. Para personalizar cualquier parte de cómo se reproduce un formulario, sólo hay que reemplazar la plantilla existente creando una nueva. Para entender cómo funciona esto, vamos a personalizar el fragmento form_row añadiendo un atributo «class» al elemento div que envuelve cada fila. Para ello, crea un nuevo archivo de plantilla que almacenará el nuevo marcado:
  • 4. {# src/Acme/TaskBundle/Resources/views/Form/fields.html.twig #} {% block form_row %} {% spaceless %} <div class="form_row"> {{ form_label(form) }} {{ form_errors(form) }} {{ form_widget(form) }} </div> {% endspaceless %} {% endblock form_row %} Twig PHP <!-- src/Acme/TaskBundle/Resources/views/Form/form_row.html.php --> <div class="form_row"> <?php echo $view['form']->label($form, $label) ?> <?php echo $view['form']->errors($form) ?> <?php echo $view['form']->widget($form, $parameters) ?> </div>
  • 5. El fragmento field_row del formulario se usa cuando al dibujar la mayoría de los campos a través de la función form_row. Para decir al componente Form que utilice tu nuevo fragmento field_row definido anteriormente, añade lo siguiente en la parte superior de la plantilla que dibuja el formulario: {# src/Acme/TaskBundle/Resources/views/Default/new.html.twig #} {% form_theme form 'AcmeTaskBundle:Form:fields.html.twig' %} {% form_theme form 'AcmeTaskBundle:Form:fields.html.twig' 'AcmeTaskBundle:Form:fields2.html.twig' %} <form ...> Twig PHP <!-- src/Acme/TaskBundle/Resources/views/Default/new.html.php --> <?php $view['form']->setTheme($form, array('AcmeTaskBundle:Form')) ?> <?php $view['form']->setTheme($form, array('AcmeTaskBundle:Form', 'AcmeTaskBundle:Form')) ?> <form ...>
  • 6. Nombrando fragmentos de formulario En Symfony, cada parte de un formulario reproducido —elementos HTML de formulario, errores, etiquetas, etc.— se definen en base a un tema, el cual es una colección de bloques en Twig y una colección de archivos de plantilla en PHP. En Twig, cada bloque necesario se define en un solo archivo de plantilla (form_div_layout.html.twig) que vive dentro de Twig Bridge. Dentro de este archivo, puedes ver todos los bloques necesarios para reproducir un formulario y cada tipo de campo predeterminado. /Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig En PHP, los fragmentos son archivos de plantilla individuales. De manera predeterminada se encuentran en el directorio Resources/views/Form del paquete de la plataforma (ver en GitHub). El nombre de cada fragmento sigue el mismo patrón básico y se divide en dos partes, separadas por un solo carácter de guión bajo (_). Algunos ejemplos son: ● form_row — usado por form_row para reproducir la mayoría de los campos; ● textarea_widget — usado por form_widget para dibujar un campo de tipotextarea; ● form_errors — usado por form_errors para dibujar los errores de un campo;
  • 7. label (p. ej. form_label) dibuja la etiqueta de los campos widget (p. ej. form_widget) dibuja la representación HTML de los campos errors (p. ej. form_errors) dibuja los errores de los campos row (p. ej. form_row) dibuja el renglón completo de los campos (etiqueta, elemento gráfico y errores) Cada fragmento sigue el mismo patrón básico: type_part. La porción type corresponde al tipo del campo que se está reproduciendo (por ejemplo, textarea, checkbox, date, etc.), mientras que la porción part corresponde a qué se está reproduciendo (por ejemplo, label,widget, errors, etc.). Por omisión, hay cuatro posibles partes de un formulario que puedes pintar:
  • 8. Heredando fragmentos de plantilla En algunos casos, parece que falta el fragmento que deseas personalizar. Por ejemplo, no hay fragmento textarea_errors en los temas predeterminados provistos con Symfony. Entonces, ¿cómo se reproducen los errores de un campo textarea? La respuesta es: a través del fragmento field_errors. Cuando Symfony pinta los errores del tipo textarea, primero busca un fragmento textarea_errors antes de caer de nuevo al fragmento form_errors. Cada tipo de campo tiene un tipo padre (el tipo primario del textarea es text, y su padre es el form), y Symfony utiliza el fragmento para el tipo del padre si no existe el fragmento base. Por lo tanto, para sustituir sólo los errores de los campos textarea, copia el fragmento form_errors, renómbralo como textarea_errors y personalízalo. Para sustituir la reproducción predeterminada para error de todos los campos, copia y personaliza el fragmento form_errors directamente.
  • 9. Tematizando formularios globalmente En el ejemplo anterior, utilizamos el ayudante form_theme (en Twig) para «importar» fragmentos de formulario personalizados sólo para ese formulario. También puedes decirle a Symfony que importe formularios personalizados a través de tu proyecto. Twig Para incluir automáticamente en todas las plantillas los bloques personalizados de la plantilla fields.html. twig creada anteriormente, modifica el archivo de configuración de tu aplicación: # app/config/config.yml twig: form: resources: - 'AcmeTaskBundle:Form:fields.html.twig' # ...
  • 10. Para incluir automáticamente todas las plantillas personalizadas del directorio Acme/TaskBundle/Resources/views/Form creado anteriormente, modifica el archivo de configuración de tu aplicación: # app/config/config.yml framework: templating: form: resources: - 'AcmeTaskBundle:Form' # ...

×