2016-02-08 292 views
0

我在symfony2项目中使用带注释的路由,我需要实现新功能。我需要生成页面取决于当前的城市。城市通过这样的一些行动:Symfony自定义路由

/** 
* @Route("/") 
* @Route("/{name}" 
*/ 

而且我需要城市参数的一些自定义要求。只有当传递的城市包含在从数据库加载的某个动态数组中时,我才想匹配此路线,而在其他情况下,它应该转到下一条路线,而不会引发异常。

我试图使用需求,但没有想出如何将对象传入。用表达式相同的问题,我需要通过我的服务,但不知道如何。

+0

什么是检查,如果控制器动作内部存在城市的问题吗? – Benz

+0

这里的问题是,如果城市不存在,我无法从行动中继续进行路线检查。 – Phantaminuum

+0

如果您将其手动重定向到下一个路线,该怎么办? – Benz

回答

0

您可以尝试使用注释参数转换器。

使用Sensio \ Bundle \ FrameworkExcelBundle \ Configuration \ Route; 使用Sensio \ Bundle \ FrameworkExtraBundle \ Configuration \ ParamConverter;

/** 
* @Route("/city/{name}") 
* @ParamConverter("city", class="AppBundle:City", options={"entity_manager" = "foo"}) 
*/ 
public function showAction(City $city) 
{ 
} 

否则,我想你可以在你的控制器中自己做。

但请注意,对同一个控制器动作使用2个路径并不是一个真正的好习惯。

而且随着一些评论说,你应该能够对付这种控制器内部验证,然后重定向需要的地方