<< TP 10
TP 12 >>

11. Ajouter, modifier un Equipement





11.1. Ajouter un équipement

Dans le cas de l'ajout d'un équipement :

  1. <?php
  2. // src/Controller/EquipementController.php
  3. namespace App\Controller;
  4.  
  5. use App\Entity\Equipement;
  6. use App\Form\EquipementType;
  7. use App\Repository\EquipementRepository;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Doctrine\ORM\EntityManagerInterface;
  13.  
  14. class EquipementController extends AbstractController
  15. {
  16.     // ...
  17.  
  18.     /**
  19.      * Créer un nouvel équipement en affichant un formulaire
  20.      * de saisie des informations
  21.      */
  22.     #[Route('/equipement/ajouter', name: 'equipement_ajouter')]
  23.    public function ajouter(Request $request): Response
  24.     {
  25.         $equipement = new Equipement();
  26.         $form = $this->createForm(EquipementType::class, $equipement);
  27.  
  28.         $form->handleRequest($request);
  29.  
  30.         if ($form->isSubmitted() && $form->isValid()) {
  31.             $this->repository->save($equipement, true);
  32.  
  33.             return $this->redirectToRoute('equipement_lister');
  34.         }
  35.  
  36.         return $this->render('equipement/ajouter.html.twig', [
  37.             'form' => $form->createView(),
  38.         ]);
  39.     }
  40.  
  41.     // ...
  42. }
  43.  
  44. ?>

On crée le fichier src/Form/EquipementType.php.

  1. <?php
  2. namespace App\Form;
  3.  
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\OptionsResolver\OptionsResolver;
  7. use Symfony\Component\Form\Extension\Core\Type\TextType;
  8. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  9. use App\Entity\Equipement;
  10.  
  11. class EquipementType extends AbstractType
  12. {
  13.     public function buildForm(FormBuilderInterface $builder, array $options)
  14.     {
  15.         $builder
  16.             ->add('eq_libelle', TextType::class, [
  17.                 'label' => 'Libellé',
  18.                 'required' => true,
  19.             ])->add('eq_prix', NumberType::class, [
  20.                 'label' => 'Prix',
  21.                 'required' => true,
  22.             ]);
  23.     }
  24.  
  25.     public function configureOptions(OptionsResolver $resolver)
  26.     {
  27.         $resolver->setDefaults([
  28.             'data_class' => Equipement::class
  29.         ]);
  30.     }
  31. }
  32. ?>
  33.  

Enfin, il faut générer le template TWIG lié à l'ajout d'un équipement.

  1. {# templates/equipement/ajouter.html.twig #}
  2.  
  3. {% extends 'base.html.twig' %}
  4.  
  5. {% block main %}
  6.     <section>
  7.  
  8.     <h2>Ajout d'un équipement</h2>
  9.  
  10.     {{ form_start(form) }}
  11.         {{ form_row(form.eq_libelle) }}
  12.         {{ form_row(form.eq_prix) }}
  13.         <button type="submit">Ajouter</button>
  14.     {{ form_end(form) }}
  15.  
  16. {% endblock %}

11.2. Modifier un équipement

  1. <?php
  2. // src/Controller/EquipementController.php
  3. namespace App\Controller;
  4.  
  5. use App\Entity\Equipement;
  6. use App\Form\EquipementType;
  7. use App\Repository\EquipementRepository;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Doctrine\ORM\EntityManagerInterface;
  13.  
  14. class EquipementController extends AbstractController
  15. {
  16.     // ...
  17.  
  18.    /**
  19.     * Modifier un équipement étant donné son id
  20.    */
  21.     #[Route('/equipement/modifier/{id}', name: 'equipement_modifier')]
  22.   public function modifier(Request $request, int $id): Response
  23.     {
  24.          $equipement = $this->repository->find($id);
  25.        
  26.         if (!$equipement) {
  27.             throw $this->createNotFoundException('Aucun équipement avec l\'identifiant ' . $id . ' n\'a été trouvé');
  28.         }
  29.  
  30.         $form = $this->createForm(EquipementType::class, $equipement);
  31.  
  32.         $form->handleRequest($request);
  33.  
  34.         if ($form->isSubmitted() && $form->isValid()) {
  35.            
  36.             $this->repository->save($equipement, true);
  37.  
  38.             return $this->redirectToRoute('equipement_lister');
  39.         }
  40.  
  41.         return $this->render('equipement/modifier.html.twig', [
  42.             'form' => $form->createView(),
  43.         ]);
  44.  
  45.     }
  46. }
  47.  
  1. {# templates/equipement/modifier.html.twig #}
  2.  
  3. {% extends 'base.html.twig' %}
  4.  
  5. {% block css %}
  6.     {{ parent() }}
  7.    
  8. {% endblock %}
  9.  
  10. {% block main %}
  11.     <section>
  12.  
  13.     <h2>Modification d'un équipement</h2>
  14.  
  15.     {{ form_start(form) }}
  16.         {{ form_start(form) }}
  17.         {{ form_widget(form) }}
  18.         <button type="submit">Enregistrer</button>
  19.     {{ form_end(form) }}
  20.    
  21.  
  22. {% endblock %}
  23.  





<< TP 10
TP 12 >>