Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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/6/mongodb/11.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
如何在CakePHP中使用beforeValidate()?_Php_Cakephp_Cakephp 1.3_Cakephp Model - Fatal编程技术网

如何在CakePHP中使用beforeValidate()?

如何在CakePHP中使用beforeValidate()?,php,cakephp,cakephp-1.3,cakephp-model,Php,Cakephp,Cakephp 1.3,Cakephp Model,我有一个带有URL字段的表单。此字段的默认值为:http://。但该字段不是必需的。用户可以跳过它并提交表单。它不应该返回错误,因为它不是必需的,而且他们没有输入URL。但现在确实如此,因为http:// 我听说我可以使用beforeValidate()检查它是否为http://,然后清除URL字段,从而跳过错误消息 但是我不知道如何使用beforeValidate()。我搜索了谷歌,但没有找到任何有效的例子。beforeValidate()的代码放在哪里?它是一个函数吗?如何从那里访问提交的表

我有一个带有URL字段的表单。此字段的默认值为:http://。但该字段不是必需的。用户可以跳过它并提交表单。它不应该返回错误,因为它不是必需的,而且他们没有输入URL。但现在确实如此,因为http://

我听说我可以使用beforeValidate()检查它是否为http://,然后清除URL字段,从而跳过错误消息

但是我不知道如何使用beforeValidate()。我搜索了谷歌,但没有找到任何有效的例子。beforeValidate()的代码放在哪里?它是一个函数吗?如何从那里访问提交的表单数据

谢谢。

是的,beforeValidate()是模型的一个函数。所以每种型号都有。您应该如何使用它:

class YourModel extends AppModel {
   function beforeValidate(){
      if($this->data['YourModel']['url_field'] == 'http://'){
         unset($this->data['YourModel']['url_field']);
      }
      return true; //this is required, otherwise validation will always fail
   }
}

不要将http://硬编码到表单中,而是为URL添加适当的验证,并使用以下命令允许空白


“allowEmpty”=>true

错误确切地说是什么?它返回验证错误消息“URL无效”。在表单提交之后,我需要在验证之前清除http://字段,因此cakephp将跳过该字段作为空白。请参阅前面的问题:与其取消设置变量,不如将其设置为空白。。验证规则中可能需要它。