Ceci est une ancienne révision du document !
Un formulaire d'édition d'article avec deux boutons : Enregistrer
et Annuler
.
class ArticleTpe extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('reference', StringType::class) ->add('denomination', StringType::class) ->add('couleur', StringType::class) // Bouton "Enregistrer" ->add('save', SubmitType::class, [ 'label' => 'Enregistrer', 'attr' => [ 'class' => 'btn btn-primary' ] ]) // Bouton "Annuler" ->add('cancel', SubmitType::class, [ 'label' => 'Annuler', 'attr' => [ 'class' => 'btn btn-secondary' ] ]) ; ] }
{{ form_start(form) }} {{ form_row(form.reference) }} {{ form_row(form.denomination) }} {{ form_row(form.couleur) }} {{ form_widget(form.save) }} {{ form_widget(form.cancel) }} {{ form_end(form) }}
Dans le formulaire, agir de façon différente selon le bouton qui a été cliqué :
// Le formulaire a-t-il été soumis ? if($form->isSubmitted()) { // L'utilisateur a-t-il cliqué sur "Enregistrer" ? if($form->get('save')->isClicked()) { // Les données du formulaire sont-elles valides ? if($form->isValid()) { // On enregistre l'article $manager->persist($article); $manager->flush(); // ENREGISTREMENT EFFECTUÉ // On redirige vers la liste d'articles return $this->redirectToRoute('liste_articles'); } } // L'utilisateur a-t-il cliqué sur "Annuler" ? if($form->get('cancel')->isClicked()) { // ENREGISTREMENT ANNULÉ // On redirige vers la liste d'articles return $this->redirectToRoute('liste_articles'); } } // FORMULAIRE PAS ENCORE SOUMIS // On affiche simplement la vue contenant le formulaire return $this->render(edit.html.twig', [ 'form' => $form->createView() ]);