Как управлять префиксом в Symfony (3.0) с помощью пакета KnpMenu

Я изо всех сил пытался добавить префикс в моем маршруте с KnpMenu на Symfony 3.0, моим префиксом были языковые инициалы ISO.

Я получаю сообщение об ошибке, похожее на это: отсутствуютнекоторые обязательные параметры ("_locale") для создания URL для маршрута "home"

Нашел решение, делюсь им с вами

В моем файле маршрутизации у меня было:

#[my_project]\app\config\routing.yml    
my_app:
      resource: "@MyBundle/Resources/config/routing.yml"
      prefix: /{_locale}
      requirements:
        _locale: fr|en

В моем файле суб-маршрутизации:

#[my_project]\src\MyBundle\Resources\config\routing.yml    
home:
  path: /home
  defaults: {_controller:MyBundle:Home:index}

Я реализовал меню, как описано в документе (см.: https://github.com/KnpLabs/KnpMenu)

  #[my_project]\MyBundle\Menu\Builder.php
  namespace MyBundle\Menu;

  use Knp\Menu\FactoryInterface;
  use Symfony\Component\DependencyInjection\ContainerAwareInterface;
  use Symfony\Component\DependencyInjection\ContainerAwareTrait;

  class Builder implements ContainerAwareInterface{


      use ContainerAwareTrait;

      public function mainMenu(FactoryInterface $factory, array $options){


            $menu = $factory->createItem('root');

            $logger = $GLOBALS['kernel']->getContainer()->get('logger');
            $logger->info('in mainMenu');

            $session = $this->container->get('session');
            $locale = $session->get('_locale');

            $routeParameters = array('_locale'=>$locale);

            $menu->addChild('home', array('routeParameters' =>  $routeParameters,'route' => 'home'));

            return $menu;
        }
    }

1 ответ

Решение

Решением моей проблемы было реализовать массив routeParameters внутри параметра массива, требуемого методом addChild (): $ menu-> addChild ('home', array ('routeParameters' => $ routeParameters, 'route' => 'home "));

Другие вопросы по тегам