Test Setup Failed
Branch master (1b2352)
by Valery
09:42
created

MenuController   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 87
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 38
c 1
b 0
f 0
dl 0
loc 87
rs 10
wmc 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A delete() 0 12 2
A new() 0 28 4
A edit() 0 15 3
A index() 0 5 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\Menu;
9
use App\Form\Type\MenuType;
10
use App\Repository\MenuRepository;
11
use Symfony\Component\Form\ClickableInterface;
12
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
13
use Symfony\Component\HttpFoundation\Request;
14
use Symfony\Component\HttpFoundation\Response;
15
use Symfony\Component\Routing\Annotation\Route;
16
17
final class MenuController extends BaseController
18
{
19
    /**
20
     * @Route("/admin/menu", name="admin_menu")
21
     */
22
    public function index(Request $request, MenuRepository $repository): Response
23
    {
24
        return $this->render('admin/menu/index.html.twig', [
25
            'site' => $this->site($request),
26
            'menu' => $repository->findItems(),
27
        ]);
28
    }
29
30
    /**
31
     * @Route("/admin/menu/new", name="admin_menu_new")
32
     */
33
    public function new(Request $request): Response
34
    {
35
        $menu = new Menu();
36
37
        $form = $this->createForm(MenuType::class, $menu)
38
            ->add('saveAndCreateNew', SubmitType::class);
39
        $form->handleRequest($request);
40
41
        if ($form->isSubmitted() && $form->isValid()) {
42
            $em = $this->doctrine->getManager();
43
            $em->persist($menu);
44
            $em->flush();
45
46
            $this->addFlash('success', 'message.created');
47
48
            /** @var ClickableInterface $button */
49
            $button = $form->get('saveAndCreateNew');
50
            if ($button->isClicked()) {
51
                return $this->redirectToRoute('admin_menu_new');
52
            }
53
54
            return $this->redirectToRoute('admin_menu');
55
        }
56
57
        return $this->render('admin/menu/new.html.twig', [
58
            'site' => $this->site($request),
59
            'menu' => $menu,
60
            'form' => $form->createView(),
61
        ]);
62
    }
63
64
    /**
65
     * Displays a form to edit an existing menu item.
66
     *
67
     * @Route("/admin/menu/{id<\d+>}/edit",methods={"GET", "POST"}, name="admin_menu_edit")
68
     */
69
    public function edit(Request $request, Menu $menu): Response
70
    {
71
        $form = $this->createForm(MenuType::class, $menu);
72
        $form->handleRequest($request);
73
74
        if ($form->isSubmitted() && $form->isValid()) {
75
            $this->doctrine->getManager()->flush();
76
            $this->addFlash('success', 'message.updated');
77
78
            return $this->redirectToRoute('admin_menu');
79
        }
80
81
        return $this->render('admin/menu/edit.html.twig', [
82
            'site' => $this->site($request),
83
            'form' => $form->createView(),
84
        ]);
85
    }
86
87
    /**
88
     * Deletes a menu item.
89
     *
90
     * @Route("/admin/menu/{id<\d+>}/delete", methods={"GET", "POST"}, name="admin_menu_delete")
91
     */
92
    public function delete(Request $request, Menu $menu): Response
93
    {
94
        if (!$this->isCsrfTokenValid('delete', $request->request->get('token'))) {
95
            return $this->redirectToRoute('admin_menu');
96
        }
97
98
        $em = $this->doctrine->getManager();
99
        $em->remove($menu);
100
        $em->flush();
101
        $this->addFlash('success', 'message.deleted');
102
103
        return $this->redirectToRoute('admin_menu');
104
    }
105
}
106