From d98e3f0dfc1a021053748d8a89368732adb337c4 Mon Sep 17 00:00:00 2001 From: Julien Rosset Date: Fri, 30 May 2025 18:42:10 +0200 Subject: [PATCH] Add configuration pages for machines --- src/Controller/Config/MachineController.php | 96 +++++++++++++++++++++ src/Form/Config/MachineEditForm.php | 46 ++++++++++ templates/Config/Machine/Edit.html.twig | 15 ++++ templates/Config/Machine/List.html.twig | 62 +++++++++++++ templates/Core/Main.html.twig | 1 + 5 files changed, 220 insertions(+) create mode 100644 src/Controller/Config/MachineController.php create mode 100644 src/Form/Config/MachineEditForm.php create mode 100644 templates/Config/Machine/Edit.html.twig create mode 100644 templates/Config/Machine/List.html.twig diff --git a/src/Controller/Config/MachineController.php b/src/Controller/Config/MachineController.php new file mode 100644 index 0000000..16b604a --- /dev/null +++ b/src/Controller/Config/MachineController.php @@ -0,0 +1,96 @@ +entityManager = $entityManager; + $this->machineRepository = $machineRepository; + } + + /** + * List of machines + * + * @return Response The response + */ + #[Route('/', name: 'config_machine_list', alias: 'config_machine')] + public function list (): Response { + return $this->render( + 'Config/Machine/List.html.twig', + [ + 'machines' => $this->machineRepository->findAll(), + ] + ); + } + + /** + * Edit/Create a machine + * + * @param Request $request The request + * @param Machine|null $machine The machine to edit + * + * @return Response The response + */ + #[Route('/Create', name: 'config_machine_create')] + #[Route('/Edit-{id}', name: 'config_machine_edit')] + public function edit (Request $request, ?Machine $machine = null): Response { + $machine ??= new Machine(); + + $form = $this->createForm(MachineEditForm::class, $machine); + $form->handleRequest($request); + if ($form->isSubmitted() && $form->isValid()) { + $this->entityManager->persist($machine); + $this->entityManager->flush(); + + $this->addFlash(FlashType::SUCCESS, 'La machine a bien été enregistré.'); + return $this->redirectToRoute('config_machine_list'); + } + + return $this->render('Config/Machine/Edit.html.twig', [ + 'machine' => $machine, + 'form' => $form->createView(), + ]); + } + + /** + * Delete a machine + * + * @param Machine $machine The machine to delete + * + * @return Response The response + */ + #[Route('/Delete-{id}', name: 'config_machine_delete')] + public function delete (Machine $machine): Response { + $this->entityManager->remove($machine); + $this->entityManager->flush(); + + $this->addFlash(FlashType::SUCCESS, 'La machine a bien été supprimé.'); + return $this->redirectToRoute('config_machine_list'); + } +} diff --git a/src/Form/Config/MachineEditForm.php b/src/Form/Config/MachineEditForm.php new file mode 100644 index 0000000..a1441ed --- /dev/null +++ b/src/Form/Config/MachineEditForm.php @@ -0,0 +1,46 @@ +setDefaults( + [ + 'data_class' => Machine::class, + ] + ); + } + + /** + * @inheritDoc + */ + public function buildForm (FormBuilderInterface $builder, array $options): void { + $builder + ->add('name', null, [ + 'label' => 'Nom', + ]) + ->add('labelExtraInfo1', null, [ + 'label' => 'Nom d\'information complémentaire n° 1', + 'required' => false, + ]) + ->add('labelExtraInfo2', null, [ + 'label' => 'Nom d\'information complémentaire n° 2', + 'required' => false, + ]) + ->add('submit', SubmitType::class, [ + 'label' => 'Enregistrer', + ]); + } +} \ No newline at end of file diff --git a/templates/Config/Machine/Edit.html.twig b/templates/Config/Machine/Edit.html.twig new file mode 100644 index 0000000..82d1545 --- /dev/null +++ b/templates/Config/Machine/Edit.html.twig @@ -0,0 +1,15 @@ +{% extends 'base.html.twig' %} + +{% block title %}{% if machine.id is null %}Création {% else %}Modification{% endif %} machine - {{ parent() }}{% endblock %} + +{% block mainContent %} +

+ {% if machine.id is null %} + Création nouvelle machine + {% else %} + Modification du la machine "{{ machine.name }}" + {% endif %} +

+ {{ form(form) }} + Annuler +{% endblock %} diff --git a/templates/Config/Machine/List.html.twig b/templates/Config/Machine/List.html.twig new file mode 100644 index 0000000..4237848 --- /dev/null +++ b/templates/Config/Machine/List.html.twig @@ -0,0 +1,62 @@ +{% extends '/base.html.twig' %} + +{% block title %}Liste des machines - {{ parent() }}{% endblock %} +{% block importmap %}{{ importmap(['app', 'datatables2']) }}{% endblock %} + +{% block mainContent %} +

Liste des machines

+
+
+ + + + + + + + + {% for machine in machines %} + + + + + {% endfor %} + +
Nom + + + +
{{ machine.name }} + + + + +
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/templates/Core/Main.html.twig b/templates/Core/Main.html.twig index c77a32b..89639f5 100644 --- a/templates/Core/Main.html.twig +++ b/templates/Core/Main.html.twig @@ -13,6 +13,7 @@