我想配置 Symfony locale
选项,以便我可以成功访问以下路线:
/route
/{locale}/route
目前,我可以访问
/{locale}/route
然而,我明白了,/route
返回 No route found for "GET /route"
.我的配置如下:#app/config/parameters.yml
parameters:
locale: en
#app/config/config.yml
parameters:
app_locales: en|fr
framework:
translator: { fallback: "%locale%" }
default_locale: "%locale%"
#app/config/routing.yml
app:
resource: '@AppBundle/Controller/'
type: annotation
我的 Controller 有以下注释:
#src/AppBundle/Controller/Admin/MyController.php
/**
*
* @Route(
* "/{_locale}/admin/my",
* defaults={"_locale":"%locale%"},
* requirements={"_locale":"%app_locales%"}
* )
*/
class MyController extends Controller
{
/**
* @Route("/", name="admin_my_list")
* @Method("GET")
*/
public function listAction()
{
...
}
}
如果我特别包括
locale
,一切正常。如果我排除 locale
,我得到了 No route found
错误。
最佳答案
您必须定义另一条路线来覆盖没有提供语言环境的场景,请尝试将您的路线定义更改为:
#src/AppBundle/Controller/Admin/MyController.php
class MyController extends Controller
{
/**
* @Route(
* "/admin/my",
* defaults={"_locale":"%locale%"},
* )
* @Route(
* "/{_locale}/admin/my",
* requirements={"_locale":"%app_locales%"}
* )
* @Method("GET")
*/
public function listAction()
{
...
}
}
关于Symfony 默认语言环境未在 URL 中指定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41721408/