Как управлять префиксом в 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’));

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]