src/Controller/ProjectsController.php line 52

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Projects;
  4. use App\Form\ProjectsType;
  5. use App\Repository\ProjectsRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. /**
  12.  * @Route("/projets")
  13.  */
  14. class ProjectsController extends AbstractController
  15. {
  16.     /**
  17.      * @Route("/", name="app_projects_index", methods={"GET"})
  18.      */
  19.     public function index(ProjectsRepository $projectsRepository): Response
  20.     {
  21.         return $this->render('projects/index.html.twig', [
  22.             'projects' => $projectsRepository->findAll(),
  23.         ]);
  24.     }
  25.     /**
  26.      * @Route("/new", name="app_projects_new", methods={"GET", "POST"})
  27.      */
  28.     public function new(Request $request, ProjectsRepository $projectsRepository): Response
  29.     {
  30.         $project = new Projects();
  31.         $form = $this->createForm(ProjectsType::class, $project);
  32.         $form->handleRequest($request);
  33.         if ($form->isSubmitted() && $form->isValid()) {
  34.             $projectsRepository->add($project);
  35.             return $this->redirectToRoute('app_projects_index', [], Response::HTTP_SEE_OTHER);
  36.         }
  37.         return $this->renderForm('projects/new.html.twig', [
  38.             'project' => $project,
  39.             'form' => $form,
  40.         ]);
  41.     }
  42.     /**
  43.      * @Route("/{id}/{slug}", name="app_projects_show", methods={"GET"}, requirements={"id"="\d+"})
  44.      */
  45.     public function show(Projects $project, ProjectsRepository $projectsRepo, $id, $slug = null): Response
  46.     {
  47.          $article = $projectsRepo->find($id);
  48.         if (!$article) {
  49.             throw new NotFoundHttpException();
  50.         }
  51.         if ($article->getSlug() !== $slug ) {
  52.             return $this->redirectToRoute('article_show', [
  53.                         'id' => $id,
  54.                         'slug' => $article->getSlug(),
  55.             ]);
  56.         }
  57.         return $this->render('projects/show.html.twig', [
  58.             'project' => $project,
  59.         ]);
  60.     }
  61.     /**
  62.      * @Route("/{id}/edit", name="app_projects_edit", methods={"GET", "POST"})
  63.      */
  64.     public function edit(Request $request, Projects $project, ProjectsRepository $projectsRepository): Response
  65.     {
  66.         $form = $this->createForm(ProjectsType::class, $project);
  67.         $form->handleRequest($request);
  68.         if ($form->isSubmitted() && $form->isValid()) {
  69.             $projectsRepository->add($project);
  70.             return $this->redirectToRoute('app_projects_index', [], Response::HTTP_SEE_OTHER);
  71.         }
  72.         return $this->renderForm('projects/edit.html.twig', [
  73.             'project' => $project,
  74.             'form' => $form,
  75.         ]);
  76.     }
  77.     /**
  78.      * @Route("/{id}", name="app_projects_delete", methods={"POST"})
  79.      */
  80.     public function delete(Request $request, Projects $project, ProjectsRepository $projectsRepository): Response
  81.     {
  82.         if ($this->isCsrfTokenValid('delete'.$project->getId(), $request->request->get('_token'))) {
  83.             $projectsRepository->remove($project);
  84.         }
  85.         return $this->redirectToRoute('app_projects_index', [], Response::HTTP_SEE_OTHER);
  86.     }
  87. }