忽略 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 行的括号关闭的。
在 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 行的括号关闭的。