Chargement...

Formulaires Symfony


Créer un formulaire simple avec Symfony

Voici un exemple de création de formulaire

Notre controlleur:

class FrontController extends Controller
{
    /**
     * @Route("/login")
     * @Template()
     */
    public function loginAction()
    {
        $user = new User();
        $form = $this->createFormBuilder($user)
            ->add('username', 'text')
            ->add('password', 'text')
            ->add('save', 'submit')
            ->getForm();

        return array('form' =>  $form->createView() );
    }

Et notre template:

{{form(form)}}

Récupérer les valeurs d'un formulaire

On utilisera les méthodes $form->handleRequest($request) et $form->getData()

use Symfony\Component\HttpFoundation\Request;

class FrontController extends Controller
{
    /**
     * @Route("/login")
     * @Template()
     */
 	public function loginAction(Request $request)
    {
        $user = new User();
        $form = $this->createFormBuilder($user)
            ->add('username', 'text')
            ->add('password', 'text')
            ->add('save', 'submit')
            ->getForm();

        $form->handleRequest($request);
        if ($form->isValid()) 
        {
            $data = $form->getData();
            var_dump( $data );
            return array('form' =>  $form->createView() );
        }

        return array('form' =>  $form->createView() );
    }

Enregistrer une entité depuis le formulaire

Reprenons $user de l'exemple précédent:

$form->handleRequest($request);
if ($form->isValid()) 
{
    $em = $this->getDoctrine()->getManager();
    $em->persist($user);
    $em->flush();
}

Personnaliser votre formulaire Symfony

Il est évidemment possible de personnaliser son formulaire Symfony

{{ form_start(form, {'attr': {'class': 'form-horizontal'}}) }}

{{ form_errors(form) }}

{{ form_label(form.username, "Username", {'attr': {'class': ''}}) }}
{{ form_errors(form.username) }}
{{ form_widget(form.username, {'attr': {'class': ''}}) }}
     
{{ form_label(form.password, "Username", {'attr': {'class': ''}}) }}
{{ form_errors(form.password) }}
{{ form_widget(form.password, {'attr': {'class': ''}}) }}

{{ form_label(form.email, "Username", {'attr': {'class': ''}}) }}
{{ form_errors(form.email) }}
{{ form_widget(form.email, {'attr': {'class': ''}}) }}    

{{ form_widget(form.save, {'attr': {'class': 'btn btn-primary'}}) }}

{{ form_end(form) }}



UNE QUESTION SUR L'ARTICLE?


CSSW Apprendre à créer son site web CSSW