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?