8 changed files with 287 additions and 0 deletions
			
			
		@ -0,0 +1,94 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Controller; | 
				
			|||
 | 
				
			|||
use App\Entity\Pokemon; | 
				
			|||
use App\Form\PokemonType; | 
				
			|||
use App\Repository\PokemonRepository; | 
				
			|||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; | 
				
			|||
use Symfony\Component\HttpFoundation\Request; | 
				
			|||
use Symfony\Component\HttpFoundation\Response; | 
				
			|||
use Symfony\Component\Routing\Annotation\Route; | 
				
			|||
 | 
				
			|||
/** | 
				
			|||
 * @Route("/pokemon") | 
				
			|||
 */ | 
				
			|||
class PokemonController extends AbstractController | 
				
			|||
{ | 
				
			|||
    /** | 
				
			|||
     * @Route("/", name="pokemon_index", methods={"GET"}) | 
				
			|||
     */ | 
				
			|||
    public function index(PokemonRepository $pokemonRepository): Response | 
				
			|||
    { | 
				
			|||
        return $this->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'); | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,51 @@ | 
				
			|||
<?php | 
				
			|||
 | 
				
			|||
namespace App\Form; | 
				
			|||
 | 
				
			|||
 | 
				
			|||
use App\Entity\GenerationPoke; | 
				
			|||
use App\Entity\Pokemon; | 
				
			|||
use App\Entity\TypePoke; | 
				
			|||
use Symfony\Bridge\Doctrine\Form\Type\EntityType; | 
				
			|||
use Symfony\Component\Form\AbstractType; | 
				
			|||
use Symfony\Component\Form\FormBuilderInterface; | 
				
			|||
use Symfony\Component\OptionsResolver\OptionsResolver; | 
				
			|||
 | 
				
			|||
class PokemonType extends AbstractType | 
				
			|||
{ | 
				
			|||
    public function buildForm(FormBuilderInterface $builder, array $options) | 
				
			|||
    { | 
				
			|||
        $builder | 
				
			|||
            ->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, | 
				
			|||
        ]); | 
				
			|||
    } | 
				
			|||
} | 
				
			|||
@ -0,0 +1,4 @@ | 
				
			|||
<form method="post" action="{{ path('pokemon_delete', {'id': pokemon.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');"> | 
				
			|||
    <input type="hidden" name="_token" value="{{ csrf_token('delete' ~ pokemon.id) }}"> | 
				
			|||
    <button class="btn">Delete</button> | 
				
			|||
</form> | 
				
			|||
@ -0,0 +1,4 @@ | 
				
			|||
{{ form_start(form) }} | 
				
			|||
    {{ form_widget(form) }} | 
				
			|||
    <button class="btn">{{ button_label|default('Save') }}</button> | 
				
			|||
{{ form_end(form) }} | 
				
			|||
@ -0,0 +1,13 @@ | 
				
			|||
{% extends 'base.html.twig' %} | 
				
			|||
 | 
				
			|||
{% block title %}Edit Pokemon{% endblock %} | 
				
			|||
 | 
				
			|||
{% block body %} | 
				
			|||
    <h1>Edit Pokemon</h1> | 
				
			|||
 | 
				
			|||
    {{ include('pokemon/_form.html.twig', {'button_label': 'Update'}) }} | 
				
			|||
 | 
				
			|||
    <a href="{{ path('pokemon_index') }}">back to list</a> | 
				
			|||
 | 
				
			|||
    {{ include('pokemon/_delete_form.html.twig') }} | 
				
			|||
{% endblock %} | 
				
			|||
@ -0,0 +1,49 @@ | 
				
			|||
{% extends 'base.html.twig' %} | 
				
			|||
 | 
				
			|||
{% block title %}Pokemon index{% endblock %} | 
				
			|||
 | 
				
			|||
{% block body %} | 
				
			|||
    <h1>Pokemon index</h1> | 
				
			|||
 | 
				
			|||
    <table class="table"> | 
				
			|||
        <thead> | 
				
			|||
            <tr> | 
				
			|||
                <th>Numero</th> | 
				
			|||
                <th>Nom</th> | 
				
			|||
                <th>Type 1</th> | 
				
			|||
                <th>Type 2</th> | 
				
			|||
                <th>Generation</th> | 
				
			|||
                <th>Vie</th> | 
				
			|||
                <th>Attaque</th> | 
				
			|||
                <th>Defense</th> | 
				
			|||
                <th>Legendaire</th> | 
				
			|||
                <th>actions</th> | 
				
			|||
            </tr> | 
				
			|||
        </thead> | 
				
			|||
        <tbody> | 
				
			|||
        {% for pokemon in pokemon %} | 
				
			|||
            <tr> | 
				
			|||
                <td>{{ pokemon.numero }}</td> | 
				
			|||
                <td>{{ pokemon.nom }}</td> | 
				
			|||
                <td>{{ pokemon.type1.name }}</td> | 
				
			|||
                <td>{% if pokemon.type2 %} {{ pokemon.type2.name }} {% endif %}</td> | 
				
			|||
                <td>{{ pokemon.generation.name }}</td> | 
				
			|||
                <td>{{ pokemon.vie }}</td> | 
				
			|||
                <td>{{ pokemon.attaque }}</td> | 
				
			|||
                <td>{{ pokemon.defense }}</td> | 
				
			|||
                <td>{{ pokemon.legendaire ? 'Yes' : 'No' }}</td> | 
				
			|||
                <td> | 
				
			|||
                    <a href="{{ path('pokemon_show', {'id': pokemon.id}) }}">show</a> | 
				
			|||
                    <a href="{{ path('pokemon_edit', {'id': pokemon.id}) }}">edit</a> | 
				
			|||
                </td> | 
				
			|||
            </tr> | 
				
			|||
        {% else %} | 
				
			|||
            <tr> | 
				
			|||
                <td colspan="8">no records found</td> | 
				
			|||
            </tr> | 
				
			|||
        {% endfor %} | 
				
			|||
        </tbody> | 
				
			|||
    </table> | 
				
			|||
 | 
				
			|||
    <a href="{{ path('pokemon_new') }}">Create new</a> | 
				
			|||
{% endblock %} | 
				
			|||
@ -0,0 +1,11 @@ | 
				
			|||
{% extends 'base.html.twig' %} | 
				
			|||
 | 
				
			|||
{% block title %}New Pokemon{% endblock %} | 
				
			|||
 | 
				
			|||
{% block body %} | 
				
			|||
    <h1>Create new Pokemon</h1> | 
				
			|||
 | 
				
			|||
    {{ include('pokemon/_form.html.twig') }} | 
				
			|||
 | 
				
			|||
    <a href="{{ path('pokemon_index') }}">back to list</a> | 
				
			|||
{% endblock %} | 
				
			|||
@ -0,0 +1,61 @@ | 
				
			|||
{% extends 'base.html.twig' %} | 
				
			|||
 | 
				
			|||
{% block title %}Pokemon{% endblock %} | 
				
			|||
 | 
				
			|||
{% block body %} | 
				
			|||
    <h1>Pokemon</h1> | 
				
			|||
 | 
				
			|||
    <table class="table"> | 
				
			|||
        <tbody> | 
				
			|||
 | 
				
			|||
            <tr> | 
				
			|||
                <th>Numero</th> | 
				
			|||
                <td>{{ pokemon.numero }}</td> | 
				
			|||
            </tr> | 
				
			|||
            <tr> | 
				
			|||
                <th>Nom</th> | 
				
			|||
                <td>{{ pokemon.nom }}</td> | 
				
			|||
            </tr> | 
				
			|||
            <tr> | 
				
			|||
                <th>Vie</th> | 
				
			|||
                <td>{{ pokemon.vie }}</td> | 
				
			|||
            </tr> | 
				
			|||
            <tr> | 
				
			|||
                <th>Attaque</th> | 
				
			|||
                <td>{{ pokemon.attaque }}</td> | 
				
			|||
            </tr> | 
				
			|||
            <tr> | 
				
			|||
                <th>Defense</th> | 
				
			|||
                <td>{{ pokemon.defense }}</td> | 
				
			|||
            </tr> | 
				
			|||
            <tr> | 
				
			|||
                <th>Legendaire</th> | 
				
			|||
                <td>{{ pokemon.legendaire ? 'Yes' : 'No' }}</td> | 
				
			|||
            </tr> | 
				
			|||
            <tr> | 
				
			|||
                <th>Type 1</th> | 
				
			|||
                <td>{{ pokemon.type1.name }}</td> | 
				
			|||
            </tr> | 
				
			|||
 | 
				
			|||
            {% if pokemon.type2 %} | 
				
			|||
                <tr> | 
				
			|||
                    <th>Type 2</th> | 
				
			|||
                    <td>{{ pokemon.type2.name }}</td> | 
				
			|||
                </tr> | 
				
			|||
            {% endif %} | 
				
			|||
 | 
				
			|||
            <tr> | 
				
			|||
                <th>Generation</th> | 
				
			|||
                <td>{{ pokemon.generation.name }}</td> | 
				
			|||
            </tr> | 
				
			|||
 | 
				
			|||
 | 
				
			|||
        </tbody> | 
				
			|||
    </table> | 
				
			|||
 | 
				
			|||
    <a href="{{ path('pokemon_index') }}">back to list</a> | 
				
			|||
 | 
				
			|||
    <a href="{{ path('pokemon_edit', {'id': pokemon.id}) }}">edit</a> | 
				
			|||
 | 
				
			|||
    {{ include('pokemon/_delete_form.html.twig') }} | 
				
			|||
{% endblock %} | 
				
			|||
					Loading…
					
					
				
		Reference in new issue