我也发现它也有点烦人,但是通过一些工作,您可以通过将多个路由设置到同一个控制器方法来使 URL 在 Symfony 中工作。问题是顺序很重要。
此示例使用注释,但您可以使用 YAML、XML 和 PHP 做同样的事情。
/**
* @Route("/whatever/{var2}/{var1}", name="whatever_allvars")
* @Route("/whatever/{var2}", name="whatever_onevar")
* @Template()
*/
public function actionFoo( $var1=22, $var2 ) {
//Var1 is optional, Var2 must come.
}
这将允许以下 URL:
site.com/whatever/var2/var1
site.com/whatever/var2
如果你真的想让它与示例 URL 匹配,你可以像这样设置它。
/**
* @Route("/controller/action/var1/{var1}/var2/{var2}", name="whatever_allvars")
* @Route("/controller/action/var1/{var1}", name="whatever_onevar")
* @Template()
*/
public function actionFoo( $var1, $var2=22 ) {
//Var2 is optional, Var1 must come.
}
这将允许以下 URL:
site.com/controller/action/var1/value1/var2/value2
site.com/controller/action/var1/value1
希望这能让您了解在 Symfony 中可以做什么。