Symfony 树枝控制器路由
Posted
技术标签:
【中文标题】Symfony 树枝控制器路由【英文标题】:Symfony twig controller route 【发布时间】:2021-08-10 04:24:22 【问题描述】:我是初学者,我的问题不大。
我有:
我有一个主菜单,其中包含指向 Controller 主要操作(索引)的链接,还有一个二级菜单,其中包含指向其他操作(如创建/编辑/删除)的链接。
我的问题是:
我不知道如何告诉 twig,当调用该控制器中的任何操作时,主菜单中的链接处于活动状态。
在二级菜单中我有:
% set route_name = app.request.attributes.get('_route') %
<a class="% if route_name == item.route % active % endif %">Link</a>
我试过了:
我尝试在 Controller 上使用前缀,但没有成功。
请问有什么提示或技巧吗?谢谢!
【问题讨论】:
【参考方案1】:如果你的菜单只有2层嵌套,你可以在整个控制器中设置@Route
注解:
/**
* @Route(path="admin/pegass", name="admin_pegass_")
*/
class PegassController extends BaseController
对于控制器中的每个操作,您只需设置名称和路径的结尾:
/**
* @Route(name="list_users", path="/list-users")
*/
public function userList()
最后,在渲染第一级菜单时,您可以使用:
% set route_name = app.request.attributes.get('_route') %
<a class="% if route_name[0:13] == 'admin_pegass_' % active % endif %">Link</a>
对于更复杂的菜单,面包屑不是微不足道的,创建它的对象表示以便遍历它并以更通用的方式执行操作会更容易(你可以使用像KnpMenu这样的包)。
【讨论】:
以上是关于Symfony 树枝控制器路由的主要内容,如果未能解决你的问题,请参考以下文章