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

Victor

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

2 Comentarios

  1. Excelente post amigo, oye tengo una duda, es obligatorio generar un entity para que se pueda mostrar el formulario ? Como genero el entity si no tengo una tabla en mi base de datos para este tipo de formulario.

    Gracias , excelente profesional.

    Responder
    • No es necesario crear un Entity para tener un formulario, puedes crear formularios con campos personalizados. Te invito a que revises el resto de articulos de Symfony2 que tengo en esta web, ya veras como encuentras respuestas a casi todo.

      Muchas gracias 😉

      Responder

Poner un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *