3

假设我有这样的路由设置:

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 抱怨缺少参数:(

谢谢 !

4

2 回答 2

4

如果您想显示链接,此设置应该可以工作:

$userNode->addChild('User edition', array(
    'route' => 'user_edit',
    'routeParameters' => array('id' => $someParameter)
));

要将父节点设置为活动,您可以使用自定义渲染器,覆盖菜单包的模板,或者根据此条件将活动类添加到菜单项:

{% if app.request.attributes.get('_route') == 'user_edit' %}
       {# activate parrent node #}
{% endif %}
于 2013-10-17T15:00:14.363 回答
4

在我的情况下发现了一些有用的东西,您可以使用菜单定义类中的请求来解决这个问题:

$userNode->addChild('User edition', array(
    'route' => 'user_edit',
    'routeParameters' => array('id' => $this->getRequest()->get('id'))
));
于 2013-10-18T13:12:51.847 回答