From ea9a18732608bb6bc48e255048b2fdc9f1f4b63d Mon Sep 17 00:00:00 2001 From: Logshiro Date: Thu, 16 Oct 2025 13:37:35 +0200 Subject: [PATCH] =?UTF-8?q?connexion=20base=20et=20cr=C3=A9ation=20premier?= =?UTF-8?q?=20crud?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 3 +- info.txt | Bin 0 -> 47474 bytes src/Controller/BaseController.php | 25 +++++++ src/Controller/CoucouController.php | 29 ++++++++ src/Controller/DroitController.php | 84 +++++++++++++++++++++++ src/Controller/MembreController.php | 84 +++++++++++++++++++++++ src/Controller/OController.php | 84 +++++++++++++++++++++++ src/Controller/PecheController.php | 22 ++++++ src/Controller/SportController.php | 29 ++++++++ src/Entity/Droit.php | 35 ++++++++++ src/Entity/Membre.php | 37 ++++++++++ src/Form/DroitType.php | 25 +++++++ src/Form/Membre1Type.php | 33 +++++++++ src/Form/MembreType.php | 33 +++++++++ src/Repository/MembreRepository.php | 15 ++++ templates/coucou/Coucou.html.twig | 33 +++++++++ templates/droit/_delete_form.html.twig | 4 ++ templates/droit/_form.html.twig | 4 ++ templates/droit/edit.html.twig | 13 ++++ templates/droit/index.html.twig | 35 ++++++++++ templates/droit/new.html.twig | 11 +++ templates/droit/show.html.twig | 26 +++++++ templates/membre/_delete_form.html.twig | 4 ++ templates/membre/_form.html.twig | 4 ++ templates/membre/edit.html.twig | 13 ++++ templates/membre/index.html.twig | 45 ++++++++++++ templates/membre/membre.html.twig | 22 ++++++ templates/membre/new.html.twig | 11 +++ templates/membre/show.html.twig | 30 ++++++++ templates/o/_delete_form.html.twig | 4 ++ templates/o/_form.html.twig | 4 ++ templates/o/edit.html.twig | 13 ++++ templates/o/index.html.twig | 37 ++++++++++ templates/o/new.html.twig | 11 +++ templates/o/show.html.twig | 30 ++++++++ templates/peche/index.html.twig | 14 ++++ templates/sport/sport.html.twig | 33 +++++++++ tests/Controller/PecheControllerTest.php | 16 +++++ 38 files changed, 953 insertions(+), 2 deletions(-) create mode 100644 info.txt create mode 100644 src/Controller/BaseController.php create mode 100644 src/Controller/CoucouController.php create mode 100644 src/Controller/DroitController.php create mode 100644 src/Controller/MembreController.php create mode 100644 src/Controller/OController.php create mode 100644 src/Controller/PecheController.php create mode 100644 src/Controller/SportController.php create mode 100644 src/Entity/Droit.php create mode 100644 src/Entity/Membre.php create mode 100644 src/Form/DroitType.php create mode 100644 src/Form/Membre1Type.php create mode 100644 src/Form/MembreType.php create mode 100644 src/Repository/MembreRepository.php create mode 100644 templates/coucou/Coucou.html.twig create mode 100644 templates/droit/_delete_form.html.twig create mode 100644 templates/droit/_form.html.twig create mode 100644 templates/droit/edit.html.twig create mode 100644 templates/droit/index.html.twig create mode 100644 templates/droit/new.html.twig create mode 100644 templates/droit/show.html.twig create mode 100644 templates/membre/_delete_form.html.twig create mode 100644 templates/membre/_form.html.twig create mode 100644 templates/membre/edit.html.twig create mode 100644 templates/membre/index.html.twig create mode 100644 templates/membre/membre.html.twig create mode 100644 templates/membre/new.html.twig create mode 100644 templates/membre/show.html.twig create mode 100644 templates/o/_delete_form.html.twig create mode 100644 templates/o/_form.html.twig create mode 100644 templates/o/edit.html.twig create mode 100644 templates/o/index.html.twig create mode 100644 templates/o/new.html.twig create mode 100644 templates/o/show.html.twig create mode 100644 templates/peche/index.html.twig create mode 100644 templates/sport/sport.html.twig create mode 100644 tests/Controller/PecheControllerTest.php diff --git a/.env b/.env index 9fdb8fa..3666c82 100644 --- a/.env +++ b/.env @@ -32,9 +32,8 @@ DEFAULT_URI=http://localhost # DATABASE_URL="sqlite:///%kernel.project_dir%/var/data_%kernel.environment%.db" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" -DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" +DATABASE_URL="mysql://contrib_root:123abc@127.0.0.1:3306/contrib?serverVersion=8.0.32&charset=utf8mb4" ###< doctrine/doctrine-bundle ### - ###> symfony/messenger ### # Choose one of the transports below # MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages diff --git a/info.txt b/info.txt new file mode 100644 index 0000000000000000000000000000000000000000..45172ca2bd98d575518c32a4ffd52f2e8fa8224e GIT binary patch literal 47474 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 JoGda0{s#xA{@VZm literal 0 HcmV?d00001 diff --git a/src/Controller/BaseController.php b/src/Controller/BaseController.php new file mode 100644 index 0000000..d22a477 --- /dev/null +++ b/src/Controller/BaseController.php @@ -0,0 +1,25 @@ +render($template, [ + 'controller_name' => $controllerName, + 'msg' => $msg, + 'tableau' => $data, + ]); + } +} \ No newline at end of file diff --git a/src/Controller/CoucouController.php b/src/Controller/CoucouController.php new file mode 100644 index 0000000..86cec68 --- /dev/null +++ b/src/Controller/CoucouController.php @@ -0,0 +1,29 @@ + 'Colaboration', + 'prenom' => 'Equipe', + ]; + + return $this->renderWithData('coucou/Coucou.html.twig', + 'Faite du Sport', + 'Bien venu !', + $tab + ); + } +} diff --git a/src/Controller/DroitController.php b/src/Controller/DroitController.php new file mode 100644 index 0000000..31403a1 --- /dev/null +++ b/src/Controller/DroitController.php @@ -0,0 +1,84 @@ +getRepository(Droit::class) + ->findAll(); + + return $this->render('droit/index.html.twig', [ + 'droits' => $droits, + ]); + } + + #[Route('/new', name: 'app_droit_new', methods: ['GET', 'POST'])] + public function new(Request $request, EntityManagerInterface $entityManager): Response + { + $droit = new Droit(); + $form = $this->createForm(DroitType::class, $droit); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $entityManager->persist($droit); + $entityManager->flush(); + + return $this->redirectToRoute('app_droit_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->render('droit/new.html.twig', [ + 'droit' => $droit, + 'form' => $form, + ]); + } + + #[Route('/{idDroit}', name: 'app_droit_show', methods: ['GET'])] + public function show(Droit $droit): Response + { + return $this->render('droit/show.html.twig', [ + 'droit' => $droit, + ]); + } + + #[Route('/{idDroit}/edit', name: 'app_droit_edit', methods: ['GET', 'POST'])] + public function edit(Request $request, Droit $droit, EntityManagerInterface $entityManager): Response + { + $form = $this->createForm(DroitType::class, $droit); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $entityManager->flush(); + + return $this->redirectToRoute('app_droit_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->render('droit/edit.html.twig', [ + 'droit' => $droit, + 'form' => $form, + ]); + } + + #[Route('/{idDroit}', name: 'app_droit_delete', methods: ['POST'])] + public function delete(Request $request, Droit $droit, EntityManagerInterface $entityManager): Response + { + if ($this->isCsrfTokenValid('delete'.$droit->getIdDroit(), $request->getPayload()->getString('_token'))) { + $entityManager->remove($droit); + $entityManager->flush(); + } + + return $this->redirectToRoute('app_droit_index', [], Response::HTTP_SEE_OTHER); + } +} diff --git a/src/Controller/MembreController.php b/src/Controller/MembreController.php new file mode 100644 index 0000000..c16957c --- /dev/null +++ b/src/Controller/MembreController.php @@ -0,0 +1,84 @@ +getRepository(Membre::class) + ->findAll(); + + return $this->render('membre/index.html.twig', [ + 'membres' => $membres, + ]); + } + + #[Route('/new', name: 'app_membre_new', methods: ['GET', 'POST'])] + public function new(Request $request, EntityManagerInterface $entityManager): Response + { + $membre = new Membre(); + $form = $this->createForm(MembreType::class, $membre); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $entityManager->persist($membre); + $entityManager->flush(); + + return $this->redirectToRoute('app_membre_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->render('membre/new.html.twig', [ + 'membre' => $membre, + 'form' => $form, + ]); + } + + #[Route('/{id}', name: 'app_membre_show', methods: ['GET'])] + public function show(Membre $membre): Response + { + return $this->render('membre/show.html.twig', [ + 'membre' => $membre, + ]); + } + + #[Route('/{id}/edit', name: 'app_membre_edit', methods: ['GET', 'POST'])] + public function edit(Request $request, Membre $membre, EntityManagerInterface $entityManager): Response + { + $form = $this->createForm(MembreType::class, $membre); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $entityManager->flush(); + + return $this->redirectToRoute('app_membre_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->render('membre/edit.html.twig', [ + 'membre' => $membre, + 'form' => $form, + ]); + } + + #[Route('/{id}', name: 'app_membre_delete', methods: ['POST'])] + public function delete(Request $request, Membre $membre, EntityManagerInterface $entityManager): Response + { + if ($this->isCsrfTokenValid('delete'.$membre->getId(), $request->getPayload()->getString('_token'))) { + $entityManager->remove($membre); + $entityManager->flush(); + } + + return $this->redirectToRoute('app_membre_index', [], Response::HTTP_SEE_OTHER); + } +} diff --git a/src/Controller/OController.php b/src/Controller/OController.php new file mode 100644 index 0000000..6ba1df2 --- /dev/null +++ b/src/Controller/OController.php @@ -0,0 +1,84 @@ +getRepository(Membre::class) + ->findAll(); + + return $this->render('o/index.html.twig', [ + 'membres' => $membres, + ]); + } + + #[Route('/new', name: 'app_o_new', methods: ['GET', 'POST'])] + public function new(Request $request, EntityManagerInterface $entityManager): Response + { + $membre = new Membre(); + $form = $this->createForm(Membre1Type::class, $membre); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $entityManager->persist($membre); + $entityManager->flush(); + + return $this->redirectToRoute('app_o_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->render('o/new.html.twig', [ + 'membre' => $membre, + 'form' => $form, + ]); + } + + #[Route('/{id}', name: 'app_o_show', methods: ['GET'])] + public function show(Membre $membre): Response + { + return $this->render('o/show.html.twig', [ + 'membre' => $membre, + ]); + } + + #[Route('/{id}/edit', name: 'app_o_edit', methods: ['GET', 'POST'])] + public function edit(Request $request, Membre $membre, EntityManagerInterface $entityManager): Response + { + $form = $this->createForm(Membre1Type::class, $membre); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $entityManager->flush(); + + return $this->redirectToRoute('app_o_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->render('o/edit.html.twig', [ + 'membre' => $membre, + 'form' => $form, + ]); + } + + #[Route('/{id}', name: 'app_o_delete', methods: ['POST'])] + public function delete(Request $request, Membre $membre, EntityManagerInterface $entityManager): Response + { + if ($this->isCsrfTokenValid('delete'.$membre->getId(), $request->getPayload()->getString('_token'))) { + $entityManager->remove($membre); + $entityManager->flush(); + } + + return $this->redirectToRoute('app_o_index', [], Response::HTTP_SEE_OTHER); + } +} diff --git a/src/Controller/PecheController.php b/src/Controller/PecheController.php new file mode 100644 index 0000000..41d1d91 --- /dev/null +++ b/src/Controller/PecheController.php @@ -0,0 +1,22 @@ +render('peche/index.html.twig', [ + 'controller_name' => 'PecheController', + ]); + } +} diff --git a/src/Controller/SportController.php b/src/Controller/SportController.php new file mode 100644 index 0000000..6946b34 --- /dev/null +++ b/src/Controller/SportController.php @@ -0,0 +1,29 @@ + 'Sport-Catégorie', + 'specialite' => 'Spécialisation', + ]; + + return $this->renderWithData('sport/sport.html.twig', + 'Faire du Sport', + 'Venez avec nous !', + $tab + ); + } +} \ No newline at end of file diff --git a/src/Entity/Droit.php b/src/Entity/Droit.php new file mode 100644 index 0000000..5640667 --- /dev/null +++ b/src/Entity/Droit.php @@ -0,0 +1,35 @@ +idDroit; + } + + public function getLibDroit(): ?string + { + return $this->libDroit; + } + + public function setLibDroit(string $libDroit): self + { + $this->libDroit = $libDroit; + return $this; + } +} diff --git a/src/Entity/Membre.php b/src/Entity/Membre.php new file mode 100644 index 0000000..f862d59 --- /dev/null +++ b/src/Entity/Membre.php @@ -0,0 +1,37 @@ +id; } + public function setId(string $id): self { $this->id = $id; return $this; } + + public function getNom(): ?string { return $this->nom; } + public function setNom(string $nom): self { $this->nom = $nom; return $this; } + + public function getPassword(): ?string { return $this->password; } + public function setPassword(?string $password): self { $this->password = $password; return $this; } + + public function getDroit(): ?Droit { return $this->droit; } + public function setDroit(?Droit $droit): self { $this->droit = $droit; return $this; } +} diff --git a/src/Form/DroitType.php b/src/Form/DroitType.php new file mode 100644 index 0000000..b683c94 --- /dev/null +++ b/src/Form/DroitType.php @@ -0,0 +1,25 @@ +add('libDroit') + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Droit::class, + ]); + } +} diff --git a/src/Form/Membre1Type.php b/src/Form/Membre1Type.php new file mode 100644 index 0000000..0bd8d45 --- /dev/null +++ b/src/Form/Membre1Type.php @@ -0,0 +1,33 @@ +add('id') + ->add('nom') + ->add('password') + ->add('droit', EntityType::class, [ + 'class' => Droit::class, + 'choice_label' => 'id', + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Membre::class, + ]); + } +} diff --git a/src/Form/MembreType.php b/src/Form/MembreType.php new file mode 100644 index 0000000..650d9fd --- /dev/null +++ b/src/Form/MembreType.php @@ -0,0 +1,33 @@ +add('id') + ->add('nom') + ->add('password') + ->add('droit', EntityType::class, [ + 'class' => Droit::class, + 'choice_label' => 'id', + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Membre::class, + ]); + } +} diff --git a/src/Repository/MembreRepository.php b/src/Repository/MembreRepository.php new file mode 100644 index 0000000..6b5c497 --- /dev/null +++ b/src/Repository/MembreRepository.php @@ -0,0 +1,15 @@ + + + +
+
+
+

{{ controller_name }}

+ +

{{ msg }}

+ +
+ +

Tableau reçu :

+
    + {% for ligne in tableau %} +
  1. {{ ligne }}
  2. + {% endfor %} +
+ + + Aller sur Sport +
+
+
+ + + +{% endblock %} diff --git a/templates/droit/_delete_form.html.twig b/templates/droit/_delete_form.html.twig new file mode 100644 index 0000000..72f8f60 --- /dev/null +++ b/templates/droit/_delete_form.html.twig @@ -0,0 +1,4 @@ +
+ + +
diff --git a/templates/droit/_form.html.twig b/templates/droit/_form.html.twig new file mode 100644 index 0000000..bf20b98 --- /dev/null +++ b/templates/droit/_form.html.twig @@ -0,0 +1,4 @@ +{{ form_start(form) }} + {{ form_widget(form) }} + +{{ form_end(form) }} diff --git a/templates/droit/edit.html.twig b/templates/droit/edit.html.twig new file mode 100644 index 0000000..65b34b9 --- /dev/null +++ b/templates/droit/edit.html.twig @@ -0,0 +1,13 @@ +{% extends 'base.html.twig' %} + +{% block title %}Edit Droit{% endblock %} + +{% block body %} +

Edit Droit

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

Droit index

+ + + + + + + + + + + {% for droit in droits %} + + + + + + {% else %} + + + + {% endfor %} + +
IdDroitLibDroitactions
{{ droit.idDroit }}{{ droit.libDroit }} + show + edit +
no records found
+ + Create new +{% endblock %} diff --git a/templates/droit/new.html.twig b/templates/droit/new.html.twig new file mode 100644 index 0000000..2d8e46d --- /dev/null +++ b/templates/droit/new.html.twig @@ -0,0 +1,11 @@ +{% extends 'base.html.twig' %} + +{% block title %}New Droit{% endblock %} + +{% block body %} +

Create new Droit

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

Droit

+ + + + + + + + + + + + +
IdDroit{{ droit.idDroit }}
LibDroit{{ droit.libDroit }}
+ + back to list + + edit + + {{ include('droit/_delete_form.html.twig') }} +{% endblock %} diff --git a/templates/membre/_delete_form.html.twig b/templates/membre/_delete_form.html.twig new file mode 100644 index 0000000..ca0dc03 --- /dev/null +++ b/templates/membre/_delete_form.html.twig @@ -0,0 +1,4 @@ +
+ + +
diff --git a/templates/membre/_form.html.twig b/templates/membre/_form.html.twig new file mode 100644 index 0000000..bf20b98 --- /dev/null +++ b/templates/membre/_form.html.twig @@ -0,0 +1,4 @@ +{{ form_start(form) }} + {{ form_widget(form) }} + +{{ form_end(form) }} diff --git a/templates/membre/edit.html.twig b/templates/membre/edit.html.twig new file mode 100644 index 0000000..b0853ab --- /dev/null +++ b/templates/membre/edit.html.twig @@ -0,0 +1,13 @@ +{% extends 'base.html.twig' %} + +{% block title %}Edit Membre{% endblock %} + +{% block body %} +

Edit Membre

+ + {{ include('membre/_form.html.twig', {'button_label': 'Update'}) }} + + back to list + + {{ include('membre/_delete_form.html.twig') }} +{% endblock %} diff --git a/templates/membre/index.html.twig b/templates/membre/index.html.twig new file mode 100644 index 0000000..42c2c1b --- /dev/null +++ b/templates/membre/index.html.twig @@ -0,0 +1,45 @@ +{% extends 'base.html.twig' %} + +{% block title %}Membre index{% endblock %} + +{% block stylesheets %} + {{ parent() }} + {# Ajouter Bootstrap depuis le CDN #} + +{% endblock %} + +{% block body %} +
+

Membre index

+ + + + + + + + + + + + {% for membre in membres %} + + + + + + + {% else %} + + + + {% endfor %} + +
IdNomPasswordActions
{{ membre.id }}{{ membre.nom }}{{ membre.password }} + Show + Edit +
No records found
+ + Create new +
+{% endblock %} diff --git a/templates/membre/membre.html.twig b/templates/membre/membre.html.twig new file mode 100644 index 0000000..08bc696 --- /dev/null +++ b/templates/membre/membre.html.twig @@ -0,0 +1,22 @@ +{# templates/membre/index.html.twig #} + +

Liste des Membres

+ + + + + + + + + + + {% for membre in membres %} + + + + + + {% endfor %} + +
IDNomDroit
{{ membre.id }}{{ membre.nom }}{{ membre.droit ? membre.droit.nom : 'Aucun' }}
\ No newline at end of file diff --git a/templates/membre/new.html.twig b/templates/membre/new.html.twig new file mode 100644 index 0000000..fb021c6 --- /dev/null +++ b/templates/membre/new.html.twig @@ -0,0 +1,11 @@ +{% extends 'base.html.twig' %} + +{% block title %}New Membre{% endblock %} + +{% block body %} +

Create new Membre

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

Membre

+ + + + + + + + + + + + + + + + +
Id{{ membre.id }}
Nom{{ membre.nom }}
Password{{ membre.password }}
+ + back to list + + edit + + {{ include('membre/_delete_form.html.twig') }} +{% endblock %} diff --git a/templates/o/_delete_form.html.twig b/templates/o/_delete_form.html.twig new file mode 100644 index 0000000..e0bff79 --- /dev/null +++ b/templates/o/_delete_form.html.twig @@ -0,0 +1,4 @@ +
+ + +
diff --git a/templates/o/_form.html.twig b/templates/o/_form.html.twig new file mode 100644 index 0000000..bf20b98 --- /dev/null +++ b/templates/o/_form.html.twig @@ -0,0 +1,4 @@ +{{ form_start(form) }} + {{ form_widget(form) }} + +{{ form_end(form) }} diff --git a/templates/o/edit.html.twig b/templates/o/edit.html.twig new file mode 100644 index 0000000..351be98 --- /dev/null +++ b/templates/o/edit.html.twig @@ -0,0 +1,13 @@ +{% extends 'base.html.twig' %} + +{% block title %}Edit Membre{% endblock %} + +{% block body %} +

Edit Membre

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

Membre index

+ + + + + + + + + + + + {% for membre in membres %} + + + + + + + {% else %} + + + + {% endfor %} + +
IdNomPasswordactions
{{ membre.id }}{{ membre.nom }}{{ membre.password }} + show + edit +
no records found
+ + Create new +{% endblock %} diff --git a/templates/o/new.html.twig b/templates/o/new.html.twig new file mode 100644 index 0000000..4ad81e5 --- /dev/null +++ b/templates/o/new.html.twig @@ -0,0 +1,11 @@ +{% extends 'base.html.twig' %} + +{% block title %}New Membre{% endblock %} + +{% block body %} +

Create new Membre

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

Membre

+ + + + + + + + + + + + + + + + +
Id{{ membre.id }}
Nom{{ membre.nom }}
Password{{ membre.password }}
+ + back to list + + edit + + {{ include('o/_delete_form.html.twig') }} +{% endblock %} diff --git a/templates/peche/index.html.twig b/templates/peche/index.html.twig new file mode 100644 index 0000000..20274e7 --- /dev/null +++ b/templates/peche/index.html.twig @@ -0,0 +1,14 @@ +{% extends 'base.html.twig' %} + +{% block title %}Hello PecheController!{% endblock %} + +{% block body %} + + +
+

Hello {{ controller_name }}! ✅

+
+{% endblock %} diff --git a/templates/sport/sport.html.twig b/templates/sport/sport.html.twig new file mode 100644 index 0000000..d8ed2e3 --- /dev/null +++ b/templates/sport/sport.html.twig @@ -0,0 +1,33 @@ +{% extends 'base.html.twig' %} + +{% block title %}Go Sport!{% endblock %} + +{% block body %} + + + +
+
+
+

{{ controller_name }}

+ +

{{ msg }}

+ +
+ +

Tableau Sport :

+
    + {% for ligne in tableau %} +
  1. {{ ligne }}
  2. + {% endfor %} +
+ + + Retourner sur Coucou +
+
+
+ + + +{% endblock %} \ No newline at end of file diff --git a/tests/Controller/PecheControllerTest.php b/tests/Controller/PecheControllerTest.php new file mode 100644 index 0000000..04c3338 --- /dev/null +++ b/tests/Controller/PecheControllerTest.php @@ -0,0 +1,16 @@ +request('GET', '/peche'); + + self::assertResponseIsSuccessful(); + } +}