我的控制器代码有更多的线来验证接收到的参数比真正的功能代码,我想知道是否有一种方法来执行此控制器方法之外的验证。有没有办法在控制器方法之前检查控制器参数?
我检查了Symfony文档,但找不到任何东西。我在想像听众那样的东西,但只是为了这个方法。
谢谢你们。
编辑:我知道路线的要求。我正在寻找一个地方注入我自己的代码。
编辑:添加了一小段。
public function searchAddressAction($radius, $page){
if ($radius < 5 || $radius > 50) {
throw $this->createNotFoundException('Radius not valid');
}
if ($page <= 0) {
throw $this->createNotFoundException('Page not found');
}
编辑3:这似乎是这样,但我不能让它工作(感谢@dlondero):
search_address:
path: /{address}/{radius}/{page}
defaults:
_controller: AppBundle:Default:searchAddress
radius: 20
page: 1
options:
expose: true
requirements:
radius: \d+
page: \d+
condition: 'request.get("radius") == 50 '
你想对参数做什么样的验证?如果它没有验证会发生什么? –
我想检查参数是否在两个值之间,例如。如果没有,代码会抛出一个未找到的异常。 –
使用控制器类中的验证创建私有方法,并在公共方法中调用它们(例如'indexAction'或'editAction')。 – cezar