SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
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
Primero un repaso
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:
{# 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>
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 ...>
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;
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:
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.
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'
# ...
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'
# ...

Más contenido relacionado

La actualidad más candente

Manejo de numeraciones
Manejo de numeracionesManejo de numeraciones
Manejo de numeracionesanny93tenelema
 
Proyecto final int.informatica
Proyecto final  int.informaticaProyecto final  int.informatica
Proyecto final int.informaticaVirghinia
 
Unidad 14 de excel
Unidad  14  de  excelUnidad  14  de  excel
Unidad 14 de excelamor1761
 
Manejo de numeraciones, viñetas y esquemas numerados. chesco
Manejo de numeraciones, viñetas y esquemas numerados. chescoManejo de numeraciones, viñetas y esquemas numerados. chesco
Manejo de numeraciones, viñetas y esquemas numerados. chescoPancho93
 
Curso basico de foxpro 9 capitulo 9
Curso basico de foxpro 9 capitulo 9Curso basico de foxpro 9 capitulo 9
Curso basico de foxpro 9 capitulo 9WILDER VILCAHUAMAN
 
Manejo de numeraciones, viñetas y esquemas numerados.
Manejo de numeraciones, viñetas y esquemas numerados.Manejo de numeraciones, viñetas y esquemas numerados.
Manejo de numeraciones, viñetas y esquemas numerados.Dianita MeNa
 
Manejo de numeración, viñetas y esquemas numericos.Mely
Manejo de numeración, viñetas y esquemas numericos.MelyManejo de numeración, viñetas y esquemas numericos.Mely
Manejo de numeración, viñetas y esquemas numericos.MelyMely Bonilla Silva
 
Tema 3 procesador de textos word
Tema 3 procesador de textos wordTema 3 procesador de textos word
Tema 3 procesador de textos wordviridiana88
 
3. planteamiento de las actividades y estrategias de aprendizaje
3. planteamiento de las actividades y estrategias de aprendizaje3. planteamiento de las actividades y estrategias de aprendizaje
3. planteamiento de las actividades y estrategias de aprendizajeYeisson Ruiz Ramirez
 
8 utn-frba manual excel 2010 - formato condicional
8  utn-frba manual excel 2010 - formato condicional8  utn-frba manual excel 2010 - formato condicional
8 utn-frba manual excel 2010 - formato condicionalSilvia O. Informática-Nticx
 
5 utn-frba manual excel 2010 - cálculos y funciones
5  utn-frba manual excel 2010 - cálculos y funciones5  utn-frba manual excel 2010 - cálculos y funciones
5 utn-frba manual excel 2010 - cálculos y funcionesSilvia O. Informática-Nticx
 
Examen de nivel excel word
Examen de nivel   excel wordExamen de nivel   excel word
Examen de nivel excel wordIsrael Zuñiga
 

La actualidad más candente (20)

Manejo de numeraciones
Manejo de numeracionesManejo de numeraciones
Manejo de numeraciones
 
Sangrías
SangríasSangrías
Sangrías
 
Proyecto final int.informatica
Proyecto final  int.informaticaProyecto final  int.informatica
Proyecto final int.informatica
 
Unidad 14 de excel
Unidad  14  de  excelUnidad  14  de  excel
Unidad 14 de excel
 
Writer
WriterWriter
Writer
 
Manejo de numeraciones, viñetas y esquemas numerados. chesco
Manejo de numeraciones, viñetas y esquemas numerados. chescoManejo de numeraciones, viñetas y esquemas numerados. chesco
Manejo de numeraciones, viñetas y esquemas numerados. chesco
 
Curso basico de foxpro 9 capitulo 9
Curso basico de foxpro 9 capitulo 9Curso basico de foxpro 9 capitulo 9
Curso basico de foxpro 9 capitulo 9
 
Ejercicios visual fox
Ejercicios visual foxEjercicios visual fox
Ejercicios visual fox
 
Manejo de numeraciones, viñetas y esquemas numerados.
Manejo de numeraciones, viñetas y esquemas numerados.Manejo de numeraciones, viñetas y esquemas numerados.
Manejo de numeraciones, viñetas y esquemas numerados.
 
Autorrelleno
AutorrellenoAutorrelleno
Autorrelleno
 
Sangrias en word.Mely
Sangrias en word.MelySangrias en word.Mely
Sangrias en word.Mely
 
Manejo de numeración, viñetas y esquemas numericos.Mely
Manejo de numeración, viñetas y esquemas numericos.MelyManejo de numeración, viñetas y esquemas numericos.Mely
Manejo de numeración, viñetas y esquemas numericos.Mely
 
Tema 3 procesador de textos word
Tema 3 procesador de textos wordTema 3 procesador de textos word
Tema 3 procesador de textos word
 
Banco de preguntas excel 2007
Banco de preguntas excel 2007Banco de preguntas excel 2007
Banco de preguntas excel 2007
 
1
11
1
 
3. planteamiento de las actividades y estrategias de aprendizaje
3. planteamiento de las actividades y estrategias de aprendizaje3. planteamiento de las actividades y estrategias de aprendizaje
3. planteamiento de las actividades y estrategias de aprendizaje
 
8 utn-frba manual excel 2010 - formato condicional
8  utn-frba manual excel 2010 - formato condicional8  utn-frba manual excel 2010 - formato condicional
8 utn-frba manual excel 2010 - formato condicional
 
Manual programación
Manual programaciónManual programación
Manual programación
 
5 utn-frba manual excel 2010 - cálculos y funciones
5  utn-frba manual excel 2010 - cálculos y funciones5  utn-frba manual excel 2010 - cálculos y funciones
5 utn-frba manual excel 2010 - cálculos y funciones
 
Examen de nivel excel word
Examen de nivel   excel wordExamen de nivel   excel word
Examen de nivel excel word
 

Destacado

Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Javier Eguiluz
 
Formacion twig
Formacion twigFormacion twig
Formacion twigMigueldelg
 
Twig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasTwig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasJavier Eguiluz
 
Introduction to Twig
Introduction to TwigIntroduction to Twig
Introduction to Twigmarkstory
 

Destacado (7)

Twig
TwigTwig
Twig
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)
 
Formacion twig
Formacion twigFormacion twig
Formacion twig
 
Empezando con Twig
Empezando con TwigEmpezando con Twig
Empezando con Twig
 
Twig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasTwig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadas
 
Introduction to Twig
Introduction to TwigIntroduction to Twig
Introduction to Twig
 
Twig tips and tricks
Twig tips and tricksTwig tips and tricks
Twig tips and tricks
 

Similar a Clase 11 continuamos con formularios

Como hacer un formulario en dreamweaver
Como hacer un formulario en dreamweaverComo hacer un formulario en dreamweaver
Como hacer un formulario en dreamweaverStefannyCantillo
 
Frames-Formularios
Frames-FormulariosFrames-Formularios
Frames-FormulariosAndres Trejo
 
Semana 4 Interfaces gráficas.pdf
Semana 4 Interfaces gráficas.pdfSemana 4 Interfaces gráficas.pdf
Semana 4 Interfaces gráficas.pdfOscarEstrada107669
 
A toda máquina con herencia visual
A toda máquina con herencia visualA toda máquina con herencia visual
A toda máquina con herencia visualIgnacio Monllor
 
material de ayuda de excel para 3°1°
material de ayuda de excel para 3°1°material de ayuda de excel para 3°1°
material de ayuda de excel para 3°1°Fernanda Roccasalvo
 
Taller: «Crear formularios online con Wufoo»
Taller: «Crear formularios online con Wufoo»Taller: «Crear formularios online con Wufoo»
Taller: «Crear formularios online con Wufoo»Eclectica DV
 
Diapositivas
DiapositivasDiapositivas
Diapositivas123arlyne
 
Escuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoEscuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoJeff Villacis
 
Escuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoEscuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoJeff Villacis
 
Leccion C Tutorial 2 VB 6
Leccion C Tutorial 2 VB 6Leccion C Tutorial 2 VB 6
Leccion C Tutorial 2 VB 6UVM
 
INFORMATICA - TEMA 9 WORD AVANZADO - FP A DISTANCIA ANDALUCIA - GRADO SUPERIO...
INFORMATICA - TEMA 9 WORD AVANZADO - FP A DISTANCIA ANDALUCIA - GRADO SUPERIO...INFORMATICA - TEMA 9 WORD AVANZADO - FP A DISTANCIA ANDALUCIA - GRADO SUPERIO...
INFORMATICA - TEMA 9 WORD AVANZADO - FP A DISTANCIA ANDALUCIA - GRADO SUPERIO...Alex Lolol
 

Similar a Clase 11 continuamos con formularios (20)

Manual De Flash
Manual De FlashManual De Flash
Manual De Flash
 
Como hacer un formulario en dreamweaver
Como hacer un formulario en dreamweaverComo hacer un formulario en dreamweaver
Como hacer un formulario en dreamweaver
 
Frames-Formularios
Frames-FormulariosFrames-Formularios
Frames-Formularios
 
Semana 4 Interfaces gráficas.pdf
Semana 4 Interfaces gráficas.pdfSemana 4 Interfaces gráficas.pdf
Semana 4 Interfaces gráficas.pdf
 
Manual de Desarrollo Formularios Web de Maestros y Operaciones en eFactory S...
Manual de Desarrollo Formularios Web de Maestros  y Operaciones en eFactory S...Manual de Desarrollo Formularios Web de Maestros  y Operaciones en eFactory S...
Manual de Desarrollo Formularios Web de Maestros y Operaciones en eFactory S...
 
Word avanz
Word avanzWord avanz
Word avanz
 
A toda máquina con herencia visual
A toda máquina con herencia visualA toda máquina con herencia visual
A toda máquina con herencia visual
 
Trabajo de desarrollo
Trabajo de desarrolloTrabajo de desarrollo
Trabajo de desarrollo
 
R37714
R37714R37714
R37714
 
material de ayuda de excel para 3°1°
material de ayuda de excel para 3°1°material de ayuda de excel para 3°1°
material de ayuda de excel para 3°1°
 
Trabajo de desarrollo
Trabajo de desarrolloTrabajo de desarrollo
Trabajo de desarrollo
 
Taller: «Crear formularios online con Wufoo»
Taller: «Crear formularios online con Wufoo»Taller: «Crear formularios online con Wufoo»
Taller: «Crear formularios online con Wufoo»
 
Tutorial php
Tutorial phpTutorial php
Tutorial php
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 
Escuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoEscuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazo
 
Escuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazoEscuela superior politécnica de chimborazo
Escuela superior politécnica de chimborazo
 
Leccion C Tutorial 2 VB 6
Leccion C Tutorial 2 VB 6Leccion C Tutorial 2 VB 6
Leccion C Tutorial 2 VB 6
 
Curso HTML 5 & jQuery - Leccion 4
Curso HTML 5 & jQuery - Leccion 4Curso HTML 5 & jQuery - Leccion 4
Curso HTML 5 & jQuery - Leccion 4
 
INFORMATICA - TEMA 9 WORD AVANZADO - FP A DISTANCIA ANDALUCIA - GRADO SUPERIO...
INFORMATICA - TEMA 9 WORD AVANZADO - FP A DISTANCIA ANDALUCIA - GRADO SUPERIO...INFORMATICA - TEMA 9 WORD AVANZADO - FP A DISTANCIA ANDALUCIA - GRADO SUPERIO...
INFORMATICA - TEMA 9 WORD AVANZADO - FP A DISTANCIA ANDALUCIA - GRADO SUPERIO...
 
Iv bimestre
Iv bimestreIv bimestre
Iv bimestre
 

Más de hydras_cs

Clase 15 FOS
Clase 15 FOSClase 15 FOS
Clase 15 FOShydras_cs
 
Clase 14 bundles útiles
Clase 14 bundles útilesClase 14 bundles útiles
Clase 14 bundles útileshydras_cs
 
Clase 13 seguridad
Clase 13   seguridad Clase 13   seguridad
Clase 13 seguridad hydras_cs
 
Clase 10 validacion
Clase 10   validacionClase 10   validacion
Clase 10 validacionhydras_cs
 
Clase 10 formularios
Clase 10   formulariosClase 10   formularios
Clase 10 formularioshydras_cs
 
Clase 7 el modelo
Clase 7  el modeloClase 7  el modelo
Clase 7 el modelohydras_cs
 
Clase 14 doctrine - subir archivos
Clase 14   doctrine - subir archivosClase 14   doctrine - subir archivos
Clase 14 doctrine - subir archivoshydras_cs
 
Clase 6 twig
Clase 6 twigClase 6 twig
Clase 6 twighydras_cs
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controllerhydras_cs
 
Clase 4 routing
Clase 4 routingClase 4 routing
Clase 4 routinghydras_cs
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasoshydras_cs
 
Sensio labsdesktop
Sensio labsdesktopSensio labsdesktop
Sensio labsdesktophydras_cs
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentaleshydras_cs
 
Clase 1 introducción a symfony 2
Clase 1   introducción a symfony 2Clase 1   introducción a symfony 2
Clase 1 introducción a symfony 2hydras_cs
 

Más de hydras_cs (15)

Clase 15 FOS
Clase 15 FOSClase 15 FOS
Clase 15 FOS
 
Clase 15
Clase 15Clase 15
Clase 15
 
Clase 14 bundles útiles
Clase 14 bundles útilesClase 14 bundles útiles
Clase 14 bundles útiles
 
Clase 13 seguridad
Clase 13   seguridad Clase 13   seguridad
Clase 13 seguridad
 
Clase 10 validacion
Clase 10   validacionClase 10   validacion
Clase 10 validacion
 
Clase 10 formularios
Clase 10   formulariosClase 10   formularios
Clase 10 formularios
 
Clase 7 el modelo
Clase 7  el modeloClase 7  el modelo
Clase 7 el modelo
 
Clase 14 doctrine - subir archivos
Clase 14   doctrine - subir archivosClase 14   doctrine - subir archivos
Clase 14 doctrine - subir archivos
 
Clase 6 twig
Clase 6 twigClase 6 twig
Clase 6 twig
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
 
Clase 4 routing
Clase 4 routingClase 4 routing
Clase 4 routing
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
 
Sensio labsdesktop
Sensio labsdesktopSensio labsdesktop
Sensio labsdesktop
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentales
 
Clase 1 introducción a symfony 2
Clase 1   introducción a symfony 2Clase 1   introducción a symfony 2
Clase 1 introducción a symfony 2
 

Clase 11 continuamos con formularios

  • 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
  • 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' # ...