'@ChillMain/Menu/defaultMenu.html.twig', 'args' => [], 'activeRouteKey' => null, ]; public function __construct(private readonly MenuComposer $menuComposer) {} /** * Render a Menu corresponding to $menuId. * * Expected params : * - args: the arguments to build the path (i.e: if pattern is /something/{bar}, args must contain {'bar': 'foo'} * - layout: the layout. Absolute path needed (i.e.: @ChillXyz/section/foo.html.twig) * - activeRouteKey : the key active, will render the menu differently. * * @deprecated link: see https://redmine.champs-libres.coop/issues/179 for more informations * * @param array{layout?: string, activeRouteKey?: string|null, args?: array} $params */ public function chillMenu(Environment $env, string $menuId, array $params = []): string { $resolvedParams = array_merge($this->defaultParams, $params); $layout = $resolvedParams['layout']; unset($resolvedParams['layout']); $resolvedParams['routes'] = $this->menuComposer->getMenuFor($menuId, $resolvedParams['args']); $resolvedParams['menus'] = $resolvedParams['routes']; return $env->render($layout, $resolvedParams); } public function getFunctions() { return [new TwigFunction( 'chill_menu', $this->chillMenu(...), [ 'is_safe' => ['html'], 'needs_environment' => true, ] ), ]; } public function getName() { return 'chill_menu'; } }