忽略 Symfony 路由要求

Symfony Routing Requirements ignored

在 Symfony 3.4 应用程序中,我有以下路由定义

/**
 * @Route("/{_locale}", name="homepage")
 *     requirements={
 *         "_locale":"de"
 *     }
 */
public function indexAction( Request $request, $_locale )
{ ... }

调用时 url

[base]/en

它仍然只是路由到路由中,而忽略了 _locale 仅 'de' 的要求。将需求语句中的“:”切换为“=”没有帮助。

到目前为止我唯一的其他路由定义是

/**
 * @Route("/", name="base")
 */
public function baseAction(Request $request)
{
    return $this->redirectToRoute( 'homepage', array('_locale' => 'de') );
}

非常欢迎任何想法。

如您所见here,Route 注释的 "requirement" 部分应该在 Route 注释本身内,因此在括号内。按照您的写法,它不被视为注释的一部分。

尝试

/**
 * @Route("/{_locale}", name="homepage",
 *     requirements={
 *         "_locale": "de"
 *     })
 */
public function indexAction( Request $request, $_locale )
{ ... }

编辑:也许 Symfony 3.4 文档中的 this 示例比我最初发布的 link 更好。请注意第 7 行的 Route 注释是如何被第 15 行的括号关闭的。