Symfony2 KnpMenuBundle:设置一个菜单项,即使它不在该菜单上

NaG*_*182 5 php symfony symfony-2.1 knpmenubundle

我创建了我的菜单构建器,它可以工作.我的一条路线是

/database
Run Code Online (Sandbox Code Playgroud)

但这有一条儿童路线:

database/view/{id}
Run Code Online (Sandbox Code Playgroud)

我不想将视图路径放入菜单项中,因为没有ID它将无法工作.

但是,当用户在视图上时,我希望数据库路由处于活动状态.

我怎样才能做到这一点?

NaG*_*182 9

管理这个小黑客解决它:

在您添加所有子项之后但在返回我添加的菜单之前,在menuBuider中

$request = $this->container->get('request');
        $routeName = $request->get('_route');
        switch ($routeName)
        {
            case 'battlemamono_database_view_by_name':
            case 'battlemamono_database_view_by_id':
                $database->setCurrent(true);
                break;
        }
Run Code Online (Sandbox Code Playgroud)

这将检查路由并将所需菜单设置为活动状态.


Nic*_*unu 6

它没有记录,但正确的方法是现在(ex):

        $menu->addChild('Category', [
            'route' => 'category_show',
            'routeParameters' => ['slug' => $category->getSlug()],
            'extras' => [
                'routes' => [
                    [
                        'route' => 'thread_show',
                        'parameters' => ['categorySlug' => $category->getSlug()]
                    ],
                ],
            ],
        ]);
Run Code Online (Sandbox Code Playgroud)

如果不需要,可以跳过参数.