如何在CakePHP中使用beforeValidate()?
我有一个带有URL字段的表单。此字段的默认值为:http://。但该字段不是必需的。用户可以跳过它并提交表单。它不应该返回错误,因为它不是必需的,而且他们没有输入URL。但现在确实如此,因为http:// 我听说我可以使用beforeValidate()检查它是否为http://,然后清除URL字段,从而跳过错误消息 但是我不知道如何使用beforeValidate()。我搜索了谷歌,但没有找到任何有效的例子。beforeValidate()的代码放在哪里?它是一个函数吗?如何从那里访问提交的表单数据 谢谢。是的,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()的代码放在哪里?它是一个函数吗?如何从那里访问提交的表
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将跳过该字段作为空白。请参阅前面的问题:与其取消设置变量,不如将其设置为空白。。验证规则中可能需要它。