我创建了我的菜单构建器并且它有效。 我的一条路线是
/database
但这有一条儿童路线:
database/view/{id}
我不想将视图路由放入菜单项,因为没有ID它将无法工作。
但我希望当用户在视图上时数据库路由处于活动状态。
我该怎么做?
答案 0 :(得分: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;
}
检查路线并将所需菜单设置为活动状态。
答案 1 :(得分:5)
没有记录,但正确的做法是现在(ex):
$menu->addChild('Category', [
'route' => 'category_show',
'routeParameters' => ['slug' => $category->getSlug()],
'extras' => [
'routes' => [
[
'route' => 'thread_show',
'parameters' => ['categorySlug' => $category->getSlug()]
],
],
],
]);
如果您不需要参数,可以跳过参数。
答案 2 :(得分:0)
在$menu->addChild('Item name', ['route' => 'item_route'])
时,值['extras']['routes'][0] = 'item_route'
被添加到当前子项。
因此,您需要将到['extra']['routes'] = []
数组的路由添加到子级。
很简单。有三种方法可以做到这一点:
我推荐这种方式。'extras'数组将被合并(无需在'route'
中复制当前的'routes'
):
$menu->addChild('Item name', [
'route' => 'item_route', // The item link in the menu
'extras' => [
// Set current (active) if route matches one of the set (including route from key 'route')
'routes' => [
'item_route_inner_1',
'item_route_inner_2',
'item_route_outside_1',
],
],
]);
->setExtra(key, value)
在'extras'
数组中,整个值将被键替换(当出于某些原因您不需要到达route中指定的路径时,此键很有用。 ):
$menu->addChild('Point name', [
'route' => 'point_route', // route point (on click)
])
// In the 'extras' array, the entire value will be replaced by the 'routes' key
->setExtra(
'routes', [ // Set current (active) if route matches one of the set
'point_route', // Can be removed, if necessary
'point_route_inner_1',
'point_route_inner_2',
'point_route_outside_1',
]
);
->setExtras(['routes'] => value)
'extras'
数组将被完全替换。 请非常小心!
$menu->addChild('Point name', [
'route' => 'point_route', // route point (on click)
])
// The 'extras' array will be completely replaced
->setExtras([
'routes' => [
'point_route', // Can be removed, if necessary
'point_route_inner_1',
'point_route_inner_2',
'point_route_outside_1',
]
]);