为所有从包路由导入的前缀添加前缀时,如何在 Symfony 包的模板中生成 URL?
Posted
技术标签:
【中文标题】为所有从包路由导入的前缀添加前缀时,如何在 Symfony 包的模板中生成 URL?【英文标题】:How to generate URLs in Symfony bundle's templates when prefixing all imported from bundle routes? 【发布时间】: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可以自动检测和使用外部应用的前缀吗?
【问题讨论】:
【参考方案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
。您应该在那里看到所有路线。
【讨论】:
以上是关于为所有从包路由导入的前缀添加前缀时,如何在 Symfony 包的模板中生成 URL?的主要内容,如果未能解决你的问题,请参考以下文章