PageController   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 29
c 1
b 0
f 0
dl 0
loc 76
rs 10
wmc 9

4 Methods

Rating   Name   Duplication   Size   Complexity  
A new() 0 16 3
A edit() 0 15 3
A delete() 0 9 2
A index() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\Controller\Admin;
6
7
use App\Controller\BaseController;
8
use App\Entity\Page;
9
use App\Form\Type\PageType;
10
use App\Repository\PageRepository;
11
use App\Service\Admin\PageService;
12
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
13
use Symfony\Component\HttpFoundation\Request;
14
use Symfony\Component\HttpFoundation\Response;
15
use Symfony\Component\Routing\Annotation\Route;
16
17
final class PageController extends BaseController
18
{
19
    /**
20
     * @Route("/admin/page", defaults={"page": "1"}, methods={"GET"}, name="admin_page")
21
     */
22
    public function index(Request $request, PageRepository $repository): Response
23
    {
24
        // Get pages
25
        $pages = $repository->findLatest($request);
26
27
        return $this->render('admin/page/index.html.twig', [
28
            'site' => $this->site($request),
29
            'pages' => $pages,
30
        ]);
31
    }
32
33
    /**
34
     * @Route("/admin/page/new", name="admin_page_new")
35
     */
36
    public function new(Request $request, PageService $pageService): Response
37
    {
38
        $page = new Page();
39
        $form = $this->createForm(PageType::class, $page);
40
        $form->handleRequest($request);
41
42
        if ($form->isSubmitted() && $form->isValid()) {
43
            $pageService->create($page);
44
45
            return $this->redirectToRoute('page', ['slug' => $page->getSlug()]);
46
        }
47
48
        return $this->render('admin/page/new.html.twig', [
49
            'site' => $this->site($request),
50
            'page' => $page,
51
            'form' => $form->createView(),
52
        ]);
53
    }
54
55
    /**
56
     * Displays a form to edit an existing Page entity.
57
     *
58
     * @Route("/admin/page/{id<\d+>}/edit",methods={"GET", "POST"}, name="admin_page_edit")
59
     */
60
    public function edit(Request $request, Page $page): Response
61
    {
62
        $form = $this->createForm(PageType::class, $page);
63
        $form->handleRequest($request);
64
65
        if ($form->isSubmitted() && $form->isValid()) {
66
            $this->doctrine->getManager()->flush();
67
            $this->addFlash('success', 'message.updated');
68
69
            return $this->redirectToRoute('page', ['slug' => $page->getSlug()]);
70
        }
71
72
        return $this->render('admin/page/edit.html.twig', [
73
            'site' => $this->site($request),
74
            'form' => $form->createView(),
75
        ]);
76
    }
77
78
    /**
79
     * Deletes a Page entity.
80
     *
81
     * @Route("/page/{id<\d+>}/delete", methods={"POST"}, name="admin_page_delete")
82
     * @IsGranted("ROLE_ADMIN")
83
     */
84
    public function delete(Request $request, Page $page, PageService $pageService): Response
85
    {
86
        if (!$this->isCsrfTokenValid('delete', $request->request->get('token'))) {
87
            return $this->redirectToRoute('admin_page');
88
        }
89
90
        $pageService->delete($page);
91
92
        return $this->redirectToRoute('admin_page');
93
    }
94
}
95