ItemHelper::getUrl()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 2
eloc 4
c 1
b 0
f 1
nc 2
nop 1
dl 0
loc 6
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Everlution\NavigationBundle\Twig;
6
7
use Everlution\Navigation\Item\ItemInterface;
8
use Everlution\Navigation\Url\CannotProvideUrlForItemException;
9
use Everlution\Navigation\Url\UrlProviderContainer;
10
use Everlution\NavigationBundle\Bridge\Item\TranslatableItemLabelInterface;
11
use Symfony\Contracts\Translation\TranslatorInterface;
12
13
/**
14
 * Class Helper.
15
 *
16
 * @author Martin Lutter <[email protected]>
17
 */
18
class ItemHelper
19
{
20
    /** @var TranslatorInterface */
21
    private $translator;
22
    /** @var UrlProviderContainer */
23
    private $urlProvider;
24
25
    public function __construct(TranslatorInterface $translator, UrlProviderContainer $urlProvider)
26
    {
27
        $this->translator = $translator;
28
        $this->urlProvider = $urlProvider;
29
    }
30
31
    public function getLabel(ItemInterface $item, string $domain = null, string $locale = null): string
32
    {
33
        $label = $item->getLabel();
34
        $parameters = $label instanceof TranslatableItemLabelInterface ? $label->getParameters() : [];
35
36
        return $this->translator->trans($label->getValue(), $parameters, $domain, $locale);
37
    }
38
39
    public function getUrl(ItemInterface $item): string
40
    {
41
        try {
42
            return $this->urlProvider->getUrl($item);
43
        } catch (CannotProvideUrlForItemException $exception) {
44
            return '#';
45
        }
46
    }
47
}
48