Bonjour à tous,
Etant débutant sur Symfony 4, je suis le tutoriel Jobeet (https://www.jdecool.fr/blog/2017/09/...roduction.html).
Tout ce passait bien mais depuis quelques heures je n'arrive plus à me déplacer sur mon site.
En effet, j'ai configuré le fichier routes.yaml comme suit :
Lorsque je me trouve sur la page http://localhost:8000/, la vue gérée par le controller JobController devrait s'afficher mais ce n'est pas le cas. Le controller est défini comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 index: path: / defaults: { _controller: '..\src\Controller\JobController::index' } job_show: path: /job/{company}/{location}/{id}/{position} defaults: { _controller: 'App\Controller\JobController::show' } requirements: id: '\d+' company: '[A-Za-z0-9\-]+' location: '[A-Za-z0-9\-]+' position: '[A-Za-z0-9\-]+'
Le fichier index.html.twig est le suviant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <?php namespace App\Controller; use App\Entity\Job; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class JobController extends AbstractController { public function index(EntityManagerInterface $em): Response { $jobs = $em->getRepository(Job::class)->findAll(); return $this->render('job/index.html.twig', [ 'jobs' => $jobs, ]); } public function show(EntityManagerInterface $em, int $id, string $company, string $location, string $position) : Response { // dans un projet réel, il sera nécessaire de faire une requête permettant de vérifier que tous les éléments // correspondent à une offre d'emploi valide $job = $em->getRepository(Job::class)->find($id); if (null === $job) { throw new NotFoundHttpException(); } return $this->render('job/show.html.twig', [ 'job' => $job, ]); } }
Mon fichier routes.yaml me semble correctement défini donc je ne vois pas trop d'où pourrait venir mon erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 {% extends "base.html.twig" %} {% block body %} <h1 class="my-4">Liste des offres</h1> {% for job in jobs %} <div class="row"> <div class="col-md-7"> <a href="#"> <img class="img-fluid rounded mb-3 mb-md-0" src="{{ asset('images/' ~ job.logo) }}" alt="{{ job.company }}"> </a> </div> <div class="col-md-5"> <h3>{{ job.position }}</h3> <p>{{ job.description }}</p> <p>Posted on {{ job.createdAt|date("m/d/Y") }}</p> <a class="btn btn-primary" href="{{ path('job_show', { 'id': job.id, 'company': job.companySlug, 'location': job.locationSlug, 'position': job.positionSlug }) }}">See more</a> </div> </div> <hr> {% endfor %} <ul class="pagination justify-content-center"> <li class="page-item disabled"> <a class="page-link" href="#" aria-label="Previous"> <span aria-hidden="true">«</span> <span class="sr-only">Previous</span> </a> </li> <li class="page-item"> <a class="page-link" href="#">1</a> </li> <li class="page-item disabled"> <a class="page-link" href="#" aria-label="Next"> <span aria-hidden="true">»</span> <span class="sr-only">Next</span> </a> </li> </ul> {% endblock %}
Ce que j'obtiens quand je lance "bind/console debug:router".
De plus, j'ai quand même une page qui s'affiche. C'est la page de mon DefaultController. Quand je modifie la page rattachée à ce controller, la page html est bien modifiée donc je suis un peu perdu.
J'ai passé mes dernières heures à chercher une solution mais malheureusement sans succès. J'espère que vous pourrez m'aider.
PS : j'ai essayé de supprimé le cache de Twig mais rien n'y fait.
Partager