brp*_*paz 5 routing bundle symfony symfony-routing
我需要有不同的路由指向同一个包.例如:/ mkt/contacts和/ crm/contacts应指向同一个联系人捆绑包.
为什么?我正在开发一个平台(一个symfony2项目),它有许多应用程序(一个营销应用程序,一个CRM应用程序等等.每个应用程序都是一组模块(bundle),其中一些是在应用程序之间共享的(比如ContactsBundle).
我需要做的是共享包的路由前缀是相对于当前应用程序的,所以如果用户在Marketing Application(/ mkt /)中,那么ContactBundle的路由前缀应该是/ mkt/contact.但如果它在CRM应用程序中应该是/ crm/contacts
我想我可以在routing.yml中创建两个路由资源,如下所示:
route1:
resource: "@Contactundle/Resources/config/routing.yml"
prefix: /crm/contact
route2:
resource: "@ContactBundle/Resources/config/routing.yml"
prefix: /mkt/contact
Run Code Online (Sandbox Code Playgroud)
最大的问题是在使用路径功能时的视图中.我如何知道路线的名称?我能想到的唯一可能的解决方案是创建一些twig扩展,它检查当前的pathinfo并返回正确的路由前缀.
有更好的想法吗?
您应该使用一条路线,但使用 mkt 和 crm 作为变量。
contact:
path: /{ prefix }/contact
defaults: { _controller: YourContactBundle:Contact:contact }
Run Code Online (Sandbox Code Playgroud)
然后在树枝上或任何你想要的地方
{{ path('contact', { 'prefix': prefix } ) }}
Run Code Online (Sandbox Code Playgroud)
您应该通过会话或向路由提供参数来检索变量联系人。
由于这只是一些共同的捆绑包,因此我建议提供参数。在市场应用程序的主页中,我会通过以下方式拨打联系表{{ path('contact',{ 'app_prefix' : constant_prefix_mkt} ) }}