Crear formularios en Symfony2

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:

1php app/console doctrine:generate:form NamespaceDeMiBundle:Entidad

crear formularios en Symfony2

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.

1<?php
2 
3namespace Pruebas\EjemploBundle\Form;
4 
5use Symfony\Component\Form\AbstractType;
6use Symfony\Component\Form\FormBuilderInterface;
7use Symfony\Component\OptionsResolver\OptionsResolverInterface;
8 
9class PostsType extends AbstractType
10{
11    /**
12     * @param FormBuilderInterface $builder
13     * @param array $options
14     */
15    public function buildForm(FormBuilderInterface $builder, array $options)
16    {
17        $builder
18            ->add('title','text')
19            ->add('description','textarea',array("required"=>true))
20            ->add('submit',"submit")
21        ;
22    }
23     
24    /**
25     * @param OptionsResolverInterface $resolver
26     */
27    public function setDefaultOptions(OptionsResolverInterface $resolver)
28    {
29        $resolver->setDefaults(array(
30            'data_class' => 'Pruebas\EjemploBundle\Entity\Posts'
31        ));
32    }
33 
34    /**
35     * @return string
36     */
37    public function getName()
38    {
39        return 'pruebas_ejemplobundle_posts';
40    }
41}

Esta clase solamente es el modelo del formulario, ahora hay que mostrarlo en la vista.

Vamos a crear un ruta para ello.

1formulario:
2  path:     /formulario
3  defaults: { _controller: PruebasEjemploBundle:Default:formulario }

Llamamos al formulario en la acción y se lo pasamos a la vista

1public function formularioAction(){
2     
3        $form=$this->createForm(new PostsType());
4         
5        return $this->render("PruebasEjemploBundle:Default:formulario.html.twig",
6                              array(
7                                  "form"=>$form->createView()
8                              ));
9    }

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) }}
4 </form>

Más información:
Formularios en Symfony2

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post