From c2ac8ba7617099031c34a04acfee64dc0e9ac84b Mon Sep 17 00:00:00 2001 From: = Date: Tue, 7 Feb 2023 16:09:39 +0000 Subject: [PATCH] Ajout du CRUD Atlier pour question 4 --- .idea/cc34.iml | 3 + .idea/php.xml | 3 + .idea/symfony2.xml | 6 ++ README.md | 5 ++ src/Controller/AtelierController.php | 78 ++++++++++++++++++++++++ src/Form/AtelierType.php | 26 ++++++++ templates/atelier/_delete_form.html.twig | 4 ++ templates/atelier/_form.html.twig | 4 ++ templates/atelier/edit.html.twig | 13 ++++ templates/atelier/index.html.twig | 37 +++++++++++ templates/atelier/new.html.twig | 11 ++++ templates/atelier/show.html.twig | 30 +++++++++ 12 files changed, 220 insertions(+) create mode 100644 .idea/symfony2.xml create mode 100644 src/Controller/AtelierController.php create mode 100644 src/Form/AtelierType.php create mode 100644 templates/atelier/_delete_form.html.twig create mode 100644 templates/atelier/_form.html.twig create mode 100644 templates/atelier/edit.html.twig create mode 100644 templates/atelier/index.html.twig create mode 100644 templates/atelier/new.html.twig create mode 100644 templates/atelier/show.html.twig diff --git a/.idea/cc34.iml b/.idea/cc34.iml index ab219fd..5897e87 100644 --- a/.idea/cc34.iml +++ b/.idea/cc34.iml @@ -133,6 +133,9 @@ + + + diff --git a/.idea/php.xml b/.idea/php.xml index 0069d06..8026c7c 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -140,6 +140,9 @@ + + + diff --git a/.idea/symfony2.xml b/.idea/symfony2.xml new file mode 100644 index 0000000..2dfac5e --- /dev/null +++ b/.idea/symfony2.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 4f2e592..7437e1e 100644 --- a/README.md +++ b/README.md @@ -41,3 +41,8 @@ symfony composer require fakerphp/faker symfony composer require orm-fixtures --dev symfony console doctrine:fixtures:load ``` + +### Question 4 +```bash +symfony console make:crud Atelier +``` \ No newline at end of file diff --git a/src/Controller/AtelierController.php b/src/Controller/AtelierController.php new file mode 100644 index 0000000..1e16b43 --- /dev/null +++ b/src/Controller/AtelierController.php @@ -0,0 +1,78 @@ +render('atelier/index.html.twig', [ + 'ateliers' => $atelierRepository->findAll(), + ]); + } + + #[Route('/new', name: 'app_atelier_new', methods: ['GET', 'POST'])] + public function new(Request $request, AtelierRepository $atelierRepository): Response + { + $atelier = new Atelier(); + $form = $this->createForm(AtelierType::class, $atelier); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $atelierRepository->save($atelier, true); + + return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->renderForm('atelier/new.html.twig', [ + 'atelier' => $atelier, + 'form' => $form, + ]); + } + + #[Route('/{id}', name: 'app_atelier_show', methods: ['GET'])] + public function show(Atelier $atelier): Response + { + return $this->render('atelier/show.html.twig', [ + 'atelier' => $atelier, + ]); + } + + #[Route('/{id}/edit', name: 'app_atelier_edit', methods: ['GET', 'POST'])] + public function edit(Request $request, Atelier $atelier, AtelierRepository $atelierRepository): Response + { + $form = $this->createForm(AtelierType::class, $atelier); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $atelierRepository->save($atelier, true); + + return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->renderForm('atelier/edit.html.twig', [ + 'atelier' => $atelier, + 'form' => $form, + ]); + } + + #[Route('/{id}', name: 'app_atelier_delete', methods: ['POST'])] + public function delete(Request $request, Atelier $atelier, AtelierRepository $atelierRepository): Response + { + if ($this->isCsrfTokenValid('delete'.$atelier->getId(), $request->request->get('_token'))) { + $atelierRepository->remove($atelier, true); + } + + return $this->redirectToRoute('app_atelier_index', [], Response::HTTP_SEE_OTHER); + } +} diff --git a/src/Form/AtelierType.php b/src/Form/AtelierType.php new file mode 100644 index 0000000..928e385 --- /dev/null +++ b/src/Form/AtelierType.php @@ -0,0 +1,26 @@ +add('nom') + ->add('description') + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Atelier::class, + ]); + } +} diff --git a/templates/atelier/_delete_form.html.twig b/templates/atelier/_delete_form.html.twig new file mode 100644 index 0000000..4eb7ce9 --- /dev/null +++ b/templates/atelier/_delete_form.html.twig @@ -0,0 +1,4 @@ +
+ + +
diff --git a/templates/atelier/_form.html.twig b/templates/atelier/_form.html.twig new file mode 100644 index 0000000..bf20b98 --- /dev/null +++ b/templates/atelier/_form.html.twig @@ -0,0 +1,4 @@ +{{ form_start(form) }} + {{ form_widget(form) }} + +{{ form_end(form) }} diff --git a/templates/atelier/edit.html.twig b/templates/atelier/edit.html.twig new file mode 100644 index 0000000..c844be6 --- /dev/null +++ b/templates/atelier/edit.html.twig @@ -0,0 +1,13 @@ +{% extends 'base.html.twig' %} + +{% block title %}Edit Atelier{% endblock %} + +{% block body %} +

Edit Atelier

+ + {{ include('atelier/_form.html.twig', {'button_label': 'Update'}) }} + + back to list + + {{ include('atelier/_delete_form.html.twig') }} +{% endblock %} diff --git a/templates/atelier/index.html.twig b/templates/atelier/index.html.twig new file mode 100644 index 0000000..f243327 --- /dev/null +++ b/templates/atelier/index.html.twig @@ -0,0 +1,37 @@ +{% extends 'base.html.twig' %} + +{% block title %}Atelier index{% endblock %} + +{% block body %} +

Atelier index

+ + + + + + + + + + + + {% for atelier in ateliers %} + + + + + + + {% else %} + + + + {% endfor %} + +
IdNomDescriptionactions
{{ atelier.id }}{{ atelier.nom }}{{ atelier.description }} + show + edit +
no records found
+ + Create new +{% endblock %} diff --git a/templates/atelier/new.html.twig b/templates/atelier/new.html.twig new file mode 100644 index 0000000..72b08fe --- /dev/null +++ b/templates/atelier/new.html.twig @@ -0,0 +1,11 @@ +{% extends 'base.html.twig' %} + +{% block title %}New Atelier{% endblock %} + +{% block body %} +

Create new Atelier

+ + {{ include('atelier/_form.html.twig') }} + + back to list +{% endblock %} diff --git a/templates/atelier/show.html.twig b/templates/atelier/show.html.twig new file mode 100644 index 0000000..5b0e05f --- /dev/null +++ b/templates/atelier/show.html.twig @@ -0,0 +1,30 @@ +{% extends 'base.html.twig' %} + +{% block title %}Atelier{% endblock %} + +{% block body %} +

Atelier

+ + + + + + + + + + + + + + + + +
Id{{ atelier.id }}
Nom{{ atelier.nom }}
Description{{ atelier.description }}
+ + back to list + + edit + + {{ include('atelier/_delete_form.html.twig') }} +{% endblock %}