Completed
Pull Request — master (#154)
by Arnaud
04:40
created

MenuBuilder::createLeftMenu()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 11
c 1
b 0
f 0
nc 2
nop 0
dl 0
loc 19
ccs 0
cts 12
cp 0
crap 6
rs 9.9
1
<?php
2
3
namespace LAG\AdminBundle\Menu\Builder;
4
5
use Knp\Menu\FactoryInterface;
6
use Knp\Menu\ItemInterface;
7
use LAG\AdminBundle\Factory\ConfigurationFactory;
8
use LAG\AdminBundle\Routing\Resolver\RoutingResolverInterface;
9
10
class MenuBuilder
11
{
12
    /**
13
     * @var FactoryInterface
14
     */
15
    private $factory;
16
17
    /**
18
     * @var ConfigurationFactory
19
     */
20
    private $configurationFactory;
21
22
    /**
23
     * @var RoutingResolverInterface
24
     */
25
    private $resolver;
26
27
    public function __construct(
28
        FactoryInterface $factory,
29
        ConfigurationFactory $configurationFactory,
30
        RoutingResolverInterface $resolver
31
    ) {
32
        $this->factory = $factory;
33
        $this->configurationFactory = $configurationFactory;
34
        $this->resolver = $resolver;
35
    }
36
37
    public function createLeftMenu(): ItemInterface
38
    {
39
        $menuConfiguration = $this->configurationFactory->createMenuConfiguration('left', []);
40
        $menuConfiguration = $menuConfiguration->all();
41
42
        $menu = $this->factory->createItem('root', [
43
            'attributes' => $menuConfiguration['attributes'],
44
        ]);
45
46
        foreach ($menuConfiguration['children'] as $itemConfiguration) {
47
            dump($this->resolver->resolveOptions($itemConfiguration));
48
            $menu->addChild($itemConfiguration['text'], [
49
                'attributes' => $itemConfiguration['attributes'],
50
                'linkAttributes' => $itemConfiguration['linkAttributes'],
51
                'route' => $this->resolver->resolveOptions($itemConfiguration),
52
            ]);
53
        }
54
55
        return $menu;
56
    }
57
}
58