Publicado en Ene 12, 2015
Los formularios son un aspecto fundamental dentro del desarrollo de aplicaciones web y por eso es tan importante que un framework nos solucione problemas y nos agilice el trabajo con ellos. Ahora veremos como crear formularios en Symfony2.
En Symfony2 tenemos un comando para casi cualquier cosa, para crear un formulario en Symfony2 tenemos el comando:
1 | php app/console doctrine:generate:form NamespaceDeMiBundle:Entidad |

Esto nos generará una clase dentro del directorio Form de nuestro bundle, la cual podremos manipular a nuestro antojo. Por ejemplo yo he añadido un botón de submit y hee definido los tipos de cada campo.
3 | namespace Pruebas\EjemploBundle\Form; |
5 | use Symfony\Component\Form\AbstractType; |
6 | use Symfony\Component\Form\FormBuilderInterface; |
7 | use Symfony\Component\OptionsResolver\OptionsResolverInterface; |
9 | class PostsType extends AbstractType |
15 | public function buildForm(FormBuilderInterface $builder , array $options ) |
19 | ->add( 'description' , 'textarea' , array ( "required" =>true)) |
20 | ->add( 'submit' , "submit" ) |
27 | public function setDefaultOptions(OptionsResolverInterface $resolver ) |
29 | $resolver ->setDefaults( array ( |
30 | 'data_class' => 'Pruebas\EjemploBundle\Entity\Posts' |
37 | public function getName() |
39 | return 'pruebas_ejemplobundle_posts' ; |
Esta clase solamente es el modelo del formulario, ahora hay que mostrarlo en la vista.
Vamos a crear un ruta para ello.
3 | defaults: { _controller: PruebasEjemploBundle:Default:formulario } |
Llamamos al formulario en la acción y se lo pasamos a la vista
1 | public function formularioAction(){ |
3 | $form = $this ->createForm( new PostsType()); |
5 | return $this ->render( "PruebasEjemploBundle:Default:formulario.html.twig" , |
7 | "form" => $form ->createView() |
En la vista esto nos imprimirá el formulario completo:
1 | <form action= "" method= "post" {{ form_enctype(form) }}> |
2 | {{ form_widget(form) }} |
3 | {{ form_errors(form) }} |
Más información:
Formularios en Symfony2