Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
symfony4:formulaires_formulaire_complet_avec_entite [2020/03/31 07:32] marclebrun créée |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Formulaire complet avec entité, ajout et édition ====== | ||
- | |||
- | ===== ArticlesController.php ===== | ||
- | |||
- | <code php> | ||
- | use App\Entity\Article; | ||
- | use Doctrine\Common\Persistence\ObjectManager; | ||
- | use Symfony\Component\HttpFoundation\Request; | ||
- | use Symfony\Component\Routing\Annotation\Route; | ||
- | |||
- | ... | ||
- | |||
- | /** | ||
- | * @Route("/articles/create", name="creer_article") | ||
- | * @Route("/articles/{id}/edit", name="editer_article") | ||
- | */ | ||
- | public function edit(Article $article = null, Request $request, | ||
- | ObjectManager $manager) | ||
- | { | ||
- | |||
- | if(!$article) { | ||
- | $article = new Article(); | ||
- | } | ||
- | |||
- | $form = $this->createFormBuilder($article) | ||
- | ->add('title') | ||
- | ->add('content') | ||
- | ->add('image') | ||
- | ->getForm(); | ||
- | $form->handleRequest($request); | ||
- | |||
- | if($form->isSubmitted() && $form->isValid()) { | ||
- | if(!$article->getId()) { | ||
- | $article->setCreatedAt(new \DateTime()); | ||
- | } | ||
- | |||
- | $manager->persist($article); | ||
- | $manager->flush(); | ||
- | |||
- | return $this->redirectToRoute('voir_article', [ | ||
- | 'id' => $article->getId() | ||
- | ]); | ||
- | } | ||
- | |||
- | return $this->render('articles/edit.html.twig', [ | ||
- | 'formArticle' => $form->createView(), | ||
- | 'editMode' => $article->getId() !== null, | ||
- | ]); | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== edit.html.twig ===== | ||
- | |||
- | <code twig> | ||
- | {% extends 'base.html.twig' %} | ||
- | {% form_theme formArticle 'bootstrap_4_layout.html.twig' %} | ||
- | |||
- | {% block body%} | ||
- | |||
- | {{ form_start(formArticle) }} | ||
- | |||
- | {{ form_row(formArticle.title, { | ||
- | 'label': 'Titre', | ||
- | 'attr': {'placeholder': "Titre de l'article"}, | ||
- | }) }} | ||
- | |||
- | {{ form_row(formArticle.content, { | ||
- | 'label': 'Contenu', | ||
- | 'attr': {'placeholder': "Contenu de l'article"}, | ||
- | }) }} | ||
- | |||
- | {{ form_row(formArticle.image, { | ||
- | 'label': 'Image', | ||
- | 'attr': {'placeholder': "URL de l'image"} | ||
- | }) }} | ||
- | |||
- | <button type="submit" class="btn btn-primary"> | ||
- | {% if editMode %} | ||
- | Enregistrer les modifications | ||
- | {% else %} | ||
- | Ajouter l'article | ||
- | {% endif %} | ||
- | </button> | ||
- | |||
- | {{ form_end(formArticle) }} | ||
- | |||
- | {% endblock %} | ||
- | </code> | ||