Url routing Symfony2路由全局和可选区域设置检测
以下是我想要实现的目标,然后是我所获得的知识的汇编,没有解决方案 在Symfony2项目中,不使用专用绑定,我需要路径中的第一个目录来定义区域设置。它必须是可选的:Url routing Symfony2路由全局和可选区域设置检测,url-routing,locale,symfony-2.1,Url Routing,Locale,Symfony 2.1,以下是我想要实现的目标,然后是我所获得的知识的汇编,没有解决方案 在Symfony2项目中,不使用专用绑定,我需要路径中的第一个目录来定义区域设置。它必须是可选的: 1.=>默认语言环境、用户绑定、帐户控制器、默认索引操作 2.=>强制FR区域设置 3.=>强制EN语言环境(即使EN是默认语言环境,也需要此选项) 由于在项目结束时我将有100多条路由,并且考虑到可以随时添加区域设置,我需要所有区域设置路由只编写一次 没有机会用一个路由文件实现这一点。来自SF2.1的一个有趣的解决方案是链式路
- 1.=>默认语言环境、用户绑定、帐户控制器、默认索引操作
- 2.=>强制FR区域设置
- 3.=>强制EN语言环境(即使EN是默认语言环境,也需要此选项)
资源:base_routing.yml
(每个规则一行),后者覆盖前者
我在这里,没有好的解决方案
我喜欢Symfony(自2008年以来),但有时我会惊讶于,使用这个框架,简单的问题可能需要非常复杂的解决方案。您总是可以从另一个方向解决它,并使用一个带有宏的体面编辑器来编写路由文件。几乎没有任何体力劳动,你会达到你想要的。使用regex replace和/或宏来修改它将很简单。不管多个URL具有相同的内容对SEO有什么坏处,我也对这个问题感兴趣:)我也在寻找解决这个问题的方法,不敢相信到目前为止还没有人想出任何办法。当然。。。但这并不是我最初帖子的深层目的。我写这篇文章的目的是为了解决你们能读到的问题,也为了提到我在这个奇妙的框架中有时会遇到的一般复杂性。在我看来,一个不处理如此明显的区域设置机制的路由机制需要改进。哦,我100%同意,它有时会使非常简单的事情变得非常复杂。这就是Java的世界。我说的是Java吗?我是说Symfony2:)
sys_ajax:
resource: "@SystemAjax/InternalAjax/get"
prefix: /sysajax
locale_routing:
resource: base_routing.yml
prefix: /{_locale}
defaults:
_locale: fr
user:
resource: "@UserBundle/Resources/config/routing.yml"
prefix: /user
sys_ajax:
resource: "@SystemAjax/InternalAjax/get"
prefix: /sysajax
locale_routing:
resource: base_routing.yml
prefix: /{_locale}
requirements:
_locale: fr|en
locale_routing2:
resource: base_routing.yml
prefix: /
defaults:
_locale: fr