From 0c4a27e75952adb723d79f3f6d5b121c10ce95b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Fastr=C3=A9?= Date: Thu, 7 Jun 2018 21:51:13 +0200 Subject: [PATCH] improve menucomposer to handle parameters and translation in old api --- Resources/config/services/routing.yml | 1 + Resources/translations/messages.fr.yml | 2 ++ Routing/MenuComposer.php | 18 ++++++++++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/Resources/config/services/routing.yml b/Resources/config/services/routing.yml index fcb71ddc7..c935f1a4d 100644 --- a/Resources/config/services/routing.yml +++ b/Resources/config/services/routing.yml @@ -4,6 +4,7 @@ services: arguments: - '@Symfony\Component\Routing\RouterInterface' - '@Knp\Menu\FactoryInterface' + - '@Symfony\Component\Translation\TranslatorInterface' Chill\MainBundle\Routing\MenuComposer: '@chill.main.menu_composer' chill.main.routes_loader: diff --git a/Resources/translations/messages.fr.yml b/Resources/translations/messages.fr.yml index 543031d15..e8e0edcaf 100644 --- a/Resources/translations/messages.fr.yml +++ b/Resources/translations/messages.fr.yml @@ -64,7 +64,9 @@ Advanced search: Recherche avancée #admin Create: Créer show: voir +Show: Voir edit: modifier +Edit: Modifier Main admin menu: Menu d'administration principal Actions: Actions Users and permissions: Utilisateurs et permissions diff --git a/Routing/MenuComposer.php b/Routing/MenuComposer.php index 405ed5071..e03f61ba2 100644 --- a/Routing/MenuComposer.php +++ b/Routing/MenuComposer.php @@ -6,6 +6,7 @@ use Symfony\Component\Routing\RouteCollection; use Symfony\Component\Routing\RouterInterface; use Knp\Menu\FactoryInterface; use Knp\Menu\ItemInterface; +use Symfony\Component\Translation\TranslatorInterface; /** @@ -31,6 +32,12 @@ class MenuComposer */ private $menuFactory; + /** + * + * @var TranslatorInterface + */ + private $translator; + /** * * @var @@ -40,10 +47,12 @@ class MenuComposer function __construct( RouterInterface $router, - FactoryInterface $menuFactory + FactoryInterface $menuFactory, + TranslatorInterface $translator ) { $this->router = $router; $this->menuFactory = $menuFactory; + $this->translator = $translator; } /** @@ -74,6 +83,7 @@ class MenuComposer foreach ($routeCollection->all() as $routeKey => $route) { if ($route->hasOption('menus')) { + if (array_key_exists($menuId, $route->getOption('menus'))) { $route = $route->getOption('menus')[$menuId]; @@ -99,9 +109,9 @@ class MenuComposer // build menu from routes foreach ($routes as $order => $route) { - $menu->addChild($route['label'], [ + $menu->addChild($this->translator->trans($route['label']), [ 'route' => $route['key'], - 'routeParameters' => $parameters, + 'routeParameters' => $parameters['args'], 'order' => $order ]) ->setExtras([ @@ -114,7 +124,7 @@ class MenuComposer if ($this->hasLocalMenuBuilder($menuId)) { foreach ($this->localMenuBuilders[$menuId] as $builder) { /* @var $builder LocalMenuBuilderInterface */ - $builder->buildMenu($menuId, $menu, $parameters); + $builder->buildMenu($menuId, $menu, $parameters['args']); } }