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 树枝控制器路由的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 异常,使用控制器和树枝模板的数据库查询

Symfony 树枝 - 第三方

Symfony - 在呈现模态树枝的控制器中获取控制器操作路径。

使用 Symfony 2 本地化树枝中的日期

Symfony生成错误的url与double /

Symfony 4 不自动装配动态路由控制器