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:

php 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.

<?php

namespace Pruebas\EjemploBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class PostsType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title','text')
            ->add('description','textarea',array("required"=>true))
            ->add('submit',"submit")
        ;
    }
    
    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Pruebas\EjemploBundle\Entity\Posts'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        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.

formulario:
  path:     /formulario
  defaults: { _controller: PruebasEjemploBundle:Default:formulario }

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

public function formularioAction(){
	
        $form=$this->createForm(new PostsType());
        
        return $this->render("PruebasEjemploBundle:Default:formulario.html.twig", 
                              array(
                                  "form"=>$form->createView()
                              ));
    }

En la vista esto nos imprimirá el formulario completo:

<form action="" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}
    {{ form_errors(form) }}
 </form> 

Más información:
Formularios en Symfony2

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post