我正在使用symfony2.8。我为几个lang(en | de | cz)制作了翻译yaml文件。然后我添加了路由要求:
(全球) app \ config \ routing.yml
comflex_w2:
resource: "@ComflexW2Bundle/Resources/config/routing.yml"
defaults: { _controller: ComflexW2Bundle:Home:index, _locale: en }
prefix: /{_locale}
requirements:
_locale: en|de|cz
和内部包 src \ Comflex \ W2Bundle \ Resources \ config \ routing.yml
comflex_w2_home:
pattern: /
defaults: { _controller: ComflexW2Bundle:Home:index}
comflex_w2_login_check:
path: /login_check
defaults: { _controller: ComflexW2Bundle:User:authorization }
现在,当我转到主机/ web / app_dev.php / de 或 ... / en 或 ... / cz 然后转换工作,但当请求不包含 locale ,如 host / web / app_dev.php 时,我得到了
"找不到" GET /" 404错误
如何自动从会话文件(仅在用户登录后)或本地浏览器中设置URL中的语言环境,或者在没有人被记录时最终设置为en。
我在 app \ config \ config.yml 中找到了 default_locale:"%locale%" ,但是我不知道它是如何工作的以及"%locale%设置的位置。
答案 0 :(得分:0)
您没有为' /'定义路线,这就是您收到此错误的原因。
当您在网址中使用区域设置前缀时,最好将用户重定向到/以区域设置为前缀的网址,例如, / EN /.
您应该添加一个匹配/并重定向到本地化主页的控制器:
public function redirectAction(Request $request)
{
$locale = $request->getPreferredLanguage(['en', 'de', 'cz']);
return $this->redirectToRoute('comflex_w2_home', ['_locale' => $locale], 301);
}