Spaces:
No application file
No application file
File size: 1,622 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
<?php
namespace Mautic\CoreBundle\Menu;
use Knp\Menu\ItemInterface;
use Knp\Menu\Matcher\MatcherInterface;
use Knp\Menu\Renderer\RendererInterface;
use Twig\Environment;
class MenuRenderer implements RendererInterface
{
private array $defaultOptions;
public function __construct(
private MatcherInterface $matcher,
private Environment $twig,
array $defaultOptions = []
) {
$this->defaultOptions = array_merge(
[
'depth' => null,
'matchingDepth' => null,
'currentAsLink' => true,
'currentClass' => 'active',
'ancestorClass' => 'open',
'firstClass' => 'first',
'lastClass' => 'last',
'itemAttributes' => [],
'template' => '@MauticCore/Menu/main.html.twig',
'compressed' => false,
'allow_safe_labels' => false,
'clear_matcher' => true,
],
$defaultOptions
);
}
/**
* Renders menu.
*/
public function render(ItemInterface $item, array $options = []): string
{
$options = array_merge($this->defaultOptions, $options);
if ($options['clear_matcher']) {
$this->matcher->clear();
}
// render html
$html = $this->twig->render($options['template'], [
'item' => $item,
'options' => $options,
'matcher' => $this->matcher,
]);
return $html;
}
}
|