Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证后&;在Symfony2中获取方法_Php_Symfony - Fatal编程技术网

Php 验证后&;在Symfony2中获取方法

Php 验证后&;在Symfony2中获取方法,php,symfony,Php,Symfony,我正在使用注释来设置路由和方法类型。是否有一种方法只允许某些类型的post数据。目前我正在做以下工作: /** * @Route("/myurl", requirements={"varID" = "\d+"} ) * @Method({"POST"}) * @Template() */ 但是如果一个varID被提交了一个字符串值,那么它无论如何都会通过。。。我猜部分是因为路线上没有{varID}?有没有办法在Symfony中验证这样的POST数据?将注释更改为: /** * @Ro

我正在使用注释来设置路由和方法类型。是否有一种方法只允许某些类型的post数据。目前我正在做以下工作:

/**
 * @Route("/myurl", requirements={"varID" = "\d+"} )
 * @Method({"POST"})
 * @Template()
 */

但是如果一个varID被提交了一个字符串值,那么它无论如何都会通过。。。我猜部分是因为路线上没有{varID}?有没有办法在Symfony中验证这样的POST数据?

将注释更改为:

/**
 * @Route("/myurl/{varID}", requirements={"varID" = "\d+"} )
 * @Method({"POST"})
 * @Template()
 */
您必须告诉symfony url的哪个部分是您的变量,以允许引擎检查数据类型。然后你会得到一个例外:

 No route found for "GET /myurl/somestring"
 404 Not Found - NotFoundHttpException
 1 linked Exception:

但这难道不需要像“/myurl/6767”这样的URL吗?如果我将varID放在URL中,那么不管怎样,都不需要POST方法,对吧。。或者我遗漏了什么?您遗漏了:)像这样呈现您的表单标记:或者用户帮助函数:
{{form_start(form,{'method':'POST','action':path('route_name_to_action',{'varID':passedVar}}}
但是表单已经正确地发送了POST数据。问题是接收此帖子数据。。。如问题中所述。如果发送正确,您不会问这个问题。在终端
php应用程序/控制台路由器:debug
中运行,您将看到您有一条没有参数的操作路由,因此无法控制参数数据类型。如果您使用正确,使用param构建路由并每次发送,那么您的应用程序将运行良好。现在,当您通过GET请求传递no param时会发生什么?你把什么东西放在表格上?您的路由和方法允许这样做。