【发布时间】:2017-06-02 22:46:29
【问题描述】:
我想配置 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
我的控制器有以下注解:
#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 错误。
【问题讨论】:
-
我认为以下模式不适用。
/route和/{_locale}/route是两个不同的路由,它们根据定义为en或fr的_locale(以及其他)的要求进行匹配。当您定义默认_locale时,它只会在生成路由和省略_locale参数时帮助您。如果你真的想这样做(我不建议这样做),你可以写一个自定义的RouteMatcher。