Crear formularios en Symfony3

Vamos a ver cómo crear formularios en Symfony3. El procedimiento para crear formularios en Symfony 3 es algo diferente que en Symfony2 aunque es muy parecido, solo cambia algo de código.

Abrimos la consola y nos vamos al directorio donde tengamos el proyecto Symfony3 y lanzamos el comando:

php bin/console doctrine:generate:form MiBundle:MiEntidad

crear formularios en symfony3 doctrine generate form

Ahora tendremos un fichero nuevo en el directorio Form de nuestro Bundle. En mi caso tengo CursoType.php
También tenemos que definir el tipo de cada campo y añadir el botón submit. En mi caso lo voy dejar así:

<?php

namespace AppBundle\Form;

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

// Usamos los diferentes tipo de campo
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;

class CursoType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
// Definimos el nombre del campo, el tipo y las propiedades
            ->add('titulo', TextType::class, array("required"=>"required", "attr" =>array(
				"class" => "form-titulo titulo",
			)))
            ->add('descripcion', TextareaType::class)
	    ->add('precio', TextType::class,array(
					"label"=>"Precio:"
				))
			->add('Guardar', SubmitType::class)
        ;
    }
    
    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Curso'
        ));
    }
}

Ahora podemos crear una acción en el controlador.

public function formAction(Request $request){
		$curso = new Curso();
		$form = $this->createForm(CursoType::class,$curso);
		
	return $this->render('AppBundle:Pruebas:form.html.twig', array(
            'form' => $form->createView()
        ));
}

Mostramos el formulario en la vista

<h2>Formulario con Symfony3</h2>

{{form_start(form, {'action':'', 'method':'POST'})}}
{{form_end(form)}}

Con esto ya tendríamos un formulario creado con Symfony 3.

Más información:
http://symfony.com/doc/current/book/forms.html

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post