首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用包KnpMenu管理Symfony (3.0)中的前缀

如何用包KnpMenu管理Symfony (3.0)中的前缀
EN

Stack Overflow用户
提问于 2016-02-23 10:30:06
回答 1查看 240关注 0票数 1

在Symfony 3.0上,我很难在使用KnpMenu的路线中添加前缀,我的前缀是语言ISO的首字母。

我收到了一条类似于这样的错误消息:缺少一些强制参数("_locale")来生成路由"home"的URL

找到了一个解决办法,我和你分享:

在我的路由文件中有:

代码语言:javascript
复制
#[my_project]\app\config\routing.yml    
my_app:
      resource: "@MyBundle/Resources/config/routing.yml"
      prefix: /{_locale}
      requirements:
        _locale: fr|en

在我的子路由文件中:

代码语言:javascript
复制
#[my_project]\src\MyBundle\Resources\config\routing.yml    
home:
  path: /home
  defaults: {_controller:MyBundle:Home:index}

我按照文档中的解释实现了菜单(请参阅:https://github.com/KnpLabs/KnpMenu)

代码语言:javascript
复制
  #[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;
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-25 08:27:57

解决我的问题的方法是在addChild():$menu->addChild('home',array(' routeParameters‘=> $routeParameters,’路由‘=>’home‘)所需的数组参数中实现routeParameters数组;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35574968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档