diff --git a/src/Controller/PokemonController.php b/src/Controller/PokemonController.php
new file mode 100644
index 0000000..51364a3
--- /dev/null
+++ b/src/Controller/PokemonController.php
@@ -0,0 +1,94 @@
+render('pokemon/index.html.twig', [
+ 'pokemon' => $pokemonRepository->findAll(),
+ ]);
+ }
+
+ /**
+ * @Route("/new", name="pokemon_new", methods={"GET","POST"})
+ */
+ public function new(Request $request): Response
+ {
+ $pokemon = new Pokemon();
+ $form = $this->createForm(PokemonType::class, $pokemon);
+ $form->handleRequest($request);
+
+ if ($form->isSubmitted() && $form->isValid()) {
+ $entityManager = $this->getDoctrine()->getManager();
+ $entityManager->persist($pokemon);
+ $entityManager->flush();
+
+ return $this->redirectToRoute('pokemon_index');
+ }
+
+ return $this->render('pokemon/new.html.twig', [
+ 'pokemon' => $pokemon,
+ 'form' => $form->createView(),
+ ]);
+ }
+
+ /**
+ * @Route("/{id}", name="pokemon_show", methods={"GET"})
+ */
+ public function show(Pokemon $pokemon): Response
+ {
+ return $this->render('pokemon/show.html.twig', [
+ 'pokemon' => $pokemon,
+ ]);
+ }
+
+ /**
+ * @Route("/{id}/edit", name="pokemon_edit", methods={"GET","POST"})
+ */
+ public function edit(Request $request, Pokemon $pokemon): Response
+ {
+ $form = $this->createForm(PokemonType::class, $pokemon);
+ $form->handleRequest($request);
+
+ if ($form->isSubmitted() && $form->isValid()) {
+ $this->getDoctrine()->getManager()->flush();
+
+ return $this->redirectToRoute('pokemon_index');
+ }
+
+ return $this->render('pokemon/edit.html.twig', [
+ 'pokemon' => $pokemon,
+ 'form' => $form->createView(),
+ ]);
+ }
+
+ /**
+ * @Route("/{id}", name="pokemon_delete", methods={"POST"})
+ */
+ public function delete(Request $request, Pokemon $pokemon): Response
+ {
+ if ($this->isCsrfTokenValid('delete'.$pokemon->getId(), $request->request->get('_token'))) {
+ $entityManager = $this->getDoctrine()->getManager();
+ $entityManager->remove($pokemon);
+ $entityManager->flush();
+ }
+
+ return $this->redirectToRoute('pokemon_index');
+ }
+}
diff --git a/src/Form/PokemonType.php b/src/Form/PokemonType.php
new file mode 100644
index 0000000..6bf1b12
--- /dev/null
+++ b/src/Form/PokemonType.php
@@ -0,0 +1,51 @@
+add('numero')
+ ->add('nom')
+ ->add('vie')
+ ->add('attaque')
+ ->add('defense')
+ ->add('legendaire')
+ ->add('type1',EntityType::class, array(
+ 'class' => TypePoke::class,
+ 'choice_label' => 'name',
+ 'label' => 'Type 1'
+ ))
+ ->add('type2',EntityType::class, array(
+ 'class' => TypePoke::class,
+ 'required' => false,
+ 'empty_data' => null,
+ 'choice_label' => 'name',
+ 'label' => 'Type 2',
+ ))
+ ->add('generation',EntityType::class, array(
+ 'class' => GenerationPoke::class,
+ 'choice_label' => 'name',
+ 'label' => 'Generation'
+ ))
+ ;
+ }
+
+ public function configureOptions(OptionsResolver $resolver)
+ {
+ $resolver->setDefaults([
+ 'data_class' => Pokemon::class,
+ ]);
+ }
+}
diff --git a/templates/pokemon/_delete_form.html.twig b/templates/pokemon/_delete_form.html.twig
new file mode 100644
index 0000000..45d1698
--- /dev/null
+++ b/templates/pokemon/_delete_form.html.twig
@@ -0,0 +1,4 @@
+
diff --git a/templates/pokemon/_form.html.twig b/templates/pokemon/_form.html.twig
new file mode 100644
index 0000000..bf20b98
--- /dev/null
+++ b/templates/pokemon/_form.html.twig
@@ -0,0 +1,4 @@
+{{ form_start(form) }}
+ {{ form_widget(form) }}
+
+{{ form_end(form) }}
diff --git a/templates/pokemon/edit.html.twig b/templates/pokemon/edit.html.twig
new file mode 100644
index 0000000..8a41360
--- /dev/null
+++ b/templates/pokemon/edit.html.twig
@@ -0,0 +1,13 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Edit Pokemon{% endblock %}
+
+{% block body %}
+ Edit Pokemon
+
+ {{ include('pokemon/_form.html.twig', {'button_label': 'Update'}) }}
+
+ back to list
+
+ {{ include('pokemon/_delete_form.html.twig') }}
+{% endblock %}
diff --git a/templates/pokemon/index.html.twig b/templates/pokemon/index.html.twig
new file mode 100644
index 0000000..9ff1ac0
--- /dev/null
+++ b/templates/pokemon/index.html.twig
@@ -0,0 +1,49 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Pokemon index{% endblock %}
+
+{% block body %}
+ Pokemon index
+
+
+
+
+ Numero |
+ Nom |
+ Type 1 |
+ Type 2 |
+ Generation |
+ Vie |
+ Attaque |
+ Defense |
+ Legendaire |
+ actions |
+
+
+
+ {% for pokemon in pokemon %}
+
+ {{ pokemon.numero }} |
+ {{ pokemon.nom }} |
+ {{ pokemon.type1.name }} |
+ {% if pokemon.type2 %} {{ pokemon.type2.name }} {% endif %} |
+ {{ pokemon.generation.name }} |
+ {{ pokemon.vie }} |
+ {{ pokemon.attaque }} |
+ {{ pokemon.defense }} |
+ {{ pokemon.legendaire ? 'Yes' : 'No' }} |
+
+ show
+ edit
+ |
+
+ {% else %}
+
+ no records found |
+
+ {% endfor %}
+
+
+
+ Create new
+{% endblock %}
diff --git a/templates/pokemon/new.html.twig b/templates/pokemon/new.html.twig
new file mode 100644
index 0000000..87e5962
--- /dev/null
+++ b/templates/pokemon/new.html.twig
@@ -0,0 +1,11 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}New Pokemon{% endblock %}
+
+{% block body %}
+ Create new Pokemon
+
+ {{ include('pokemon/_form.html.twig') }}
+
+ back to list
+{% endblock %}
diff --git a/templates/pokemon/show.html.twig b/templates/pokemon/show.html.twig
new file mode 100644
index 0000000..5100705
--- /dev/null
+++ b/templates/pokemon/show.html.twig
@@ -0,0 +1,61 @@
+{% extends 'base.html.twig' %}
+
+{% block title %}Pokemon{% endblock %}
+
+{% block body %}
+ Pokemon
+
+
+
+
+
+ Numero |
+ {{ pokemon.numero }} |
+
+
+ Nom |
+ {{ pokemon.nom }} |
+
+
+ Vie |
+ {{ pokemon.vie }} |
+
+
+ Attaque |
+ {{ pokemon.attaque }} |
+
+
+ Defense |
+ {{ pokemon.defense }} |
+
+
+ Legendaire |
+ {{ pokemon.legendaire ? 'Yes' : 'No' }} |
+
+
+ Type 1 |
+ {{ pokemon.type1.name }} |
+
+
+ {% if pokemon.type2 %}
+
+ Type 2 |
+ {{ pokemon.type2.name }} |
+
+ {% endif %}
+
+
+ Generation |
+ {{ pokemon.generation.name }} |
+
+
+
+
+
+
+ back to list
+
+ edit
+
+ {{ include('pokemon/_delete_form.html.twig') }}
+{% endblock %}