【问题标题】:Symfony twig controller routeSymfony 树枝控制器路由
【发布时间】: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 上使用前缀,但没有成功。

请问有什么提示或技巧吗?谢谢!

【问题讨论】:

    标签: symfony routes controller twig


    【解决方案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这样的包)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-03
      • 2023-03-06
      • 1970-01-01
      • 2018-08-15
      • 2015-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多