Completed
Push — menu-builders ( e205db )
by Kamil
20:26
created

MenuBuilder::createAccountMenu()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 35
Code Lines 25

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 35
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 25
nc 1
nop 1
1
<?php
2
3
/*
4
 * This file is part of the Sylius package.
5
 *
6
 * (c) Paweł Jędrzejewski
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace Sylius\Bundle\ShopBundle\Menu;
13
14
use Knp\Menu\FactoryInterface;
15
use Knp\Menu\ItemInterface;
16
use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
17
use Symfony\Component\EventDispatcher\EventDispatcher;
18
19
/**
20
 * @author Paweł Jędrzejewski <[email protected]>
21
 */
22
final class MenuBuilder
23
{
24
    const ACCOUNT_MENU_EVENT = 'sylius.menu.shop.account';
25
26
    /**
27
     * @var FactoryInterface
28
     */
29
    private $factory;
30
31
    /**
32
     * @var EventDispatcher
33
     */
34
    private $eventDispatcher;
35
36
    /**
37
     * @param FactoryInterface $factory
38
     * @param EventDispatcher $eventDispatcher
39
     */
40
    public function __construct(FactoryInterface $factory, EventDispatcher $eventDispatcher)
41
    {
42
        $this->factory = $factory;
43
        $this->eventDispatcher = $eventDispatcher;
44
    }
45
46
    /**
47
     * @param array $options
48
     *
49
     * @return ItemInterface
50
     */
51
    public function createAccountMenu(array $options)
0 ignored issues
show
Unused Code introduced by
The parameter $options is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
52
    {
53
        $menu = $this->factory->createItem('root');
54
        $menu->setLabel('sylius.menu.shop.account.header');
55
56
        $menu
57
            ->addChild('dashboard', ['route' => 'sylius_shop_account_dashboard'])
58
            ->setLabel('sylius.menu.shop.account.dashboard')
59
            ->setLabelAttribute('icon', 'home')
60
        ;
61
        $menu
62
            ->addChild('personal_information', ['route' => 'sylius_shop_account_profile_update'])
63
            ->setLabel('sylius.menu.shop.account.personal_information')
64
            ->setLabelAttribute('icon', 'user')
65
        ;
66
        $menu
67
            ->addChild('change_password', ['route' => 'sylius_shop_account_change_password'])
68
            ->setLabel('sylius.menu.shop.account.change_password')
69
            ->setLabelAttribute('icon', 'lock')
70
        ;
71
        $menu
72
            ->addChild('address_book', ['route' => 'sylius_shop_account_address_book_index'])
73
            ->setLabel('sylius.menu.shop.account.address_book')
74
            ->setLabelAttribute('icon', 'book')
75
        ;
76
        $menu
77
            ->addChild('order_history', ['route' => 'sylius_shop_account_order_index'])
78
            ->setLabel('sylius.menu.shop.account.order_history')
79
            ->setLabelAttribute('icon', 'cart')
80
        ;
81
82
        $this->eventDispatcher->dispatch(self::ACCOUNT_MENU_EVENT, new MenuBuilderEvent($this->factory, $menu));
83
84
        return $menu;
85
    }
86
}
87