【问题标题】:How to generate URLs in Symfony bundle's templates when prefixing all imported from bundle routes?为所有从包路由导入的前缀添加前缀时,如何在 Symfony 包的模板中生成 URL?
【发布时间】:2019-05-21 01:32:40
【问题描述】:

我有一个 Symfony 包,它定义了一个控制器并呈现了一些模板。 路由被定义为 bundle 的 routes.yaml 内的注解。

  * @Route("/edit/{id}", name="edit")
  * @Route("/new", name="new", defaults={"id" : null})

然后,当我将捆绑包安装到应用程序中时,我会从捆绑包的 routing.yaml 导入所有带有前缀的路由。像这样:

admin_blog_controller:
    resource: '@BlogBundle/Resources/config/admin_routes.yaml'
    prefix: /admin/blog2
    name_prefix: admin.blog2.

现在我在捆绑包中有模板 我需要生成前缀未知的网址。
(因为前缀是在包之外定义的)。
我需要生成这样的路由:
{{ path('new') }} 或 {{ path('edit, {"id": blogId}) }}
但是找不到路线。

有没有办法在相对于 bundle 的 bundle 模板中生成 URL?
类似
{{ path('@Bundle/new') }} 或 {{ path('@Bundle/edit, {"id": blogId}) }}
那么path可以自动检测和使用外部应用的前缀吗?

【问题讨论】:

    标签: symfony routing prefix bundles


    【解决方案1】:

    命名您的路线唯一名称,然后您可以在任何地方使用它。类似:

    {{ path('acmeBundle_controllerName_actionName', {'id': Variable.id}) }}

    你可以使用 php bin/console debug:router --env=dev (symfony +3) 或 php app/console debug:router --env=prod (symfony 2) 在您想要的环境中查看您的路线名称。

    【讨论】:

      【解决方案2】:

      使用php bin/console debug:router。您应该在那里看到所有路线。

      【讨论】:

        猜你喜欢
        • 2017-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-07
        • 2020-06-24
        相关资源
        最近更新 更多