假设我有这样的路由设置:
users_list:
pattern: /users
defaults: { _controller: AcmeBundle:User:list }
user_edit:
pattern: /user-edit/{id}
defaults: { _controller: AcmeBundle:User:edit }
我想设置一个像这样的菜单
但我不知道如何使用动态参数“id”处理我的路线'user_edit'。实际上我不想显示链接(哪个ID?),但如果我编辑用户,我希望“用户列表”父节点处于活动状态。
我试过这样的事情
$userNode = $rootNode->addChild('Users list', array(
'route' => 'users_list',
));
$userNode->addChild('User edition', array(
'route' => 'user_edit',
));
Symfony抱怨缺少参数:(
谢谢!
答案 0 :(得分:3)
如果您想要显示链接,此设置应该有效:
$userNode->addChild('User edition', array(
'route' => 'user_edit',
'routeParameters' => array('id' => $someParameter)
));
要将parrent节点设置为活动,您可以使用自定义渲染器,覆盖menubundle的模板,或者只是根据以下条件将活动类添加到菜单项:
{% if app.request.attributes.get('_route') == 'user_edit' %}
{# activate parrent node #}
{% endif %}
答案 1 :(得分:3)
在我的案例中找到了一些有用的东西,你可以使用菜单定义类中的请求来解决这个问题:
$userNode->addChild('User edition', array(
'route' => 'user_edit',
'routeParameters' => array('id' => $this->getRequest()->get('id'))
));