【发布时间】:2011-12-06 15:07:23
【问题描述】:
我在我的提交模型中编写了一个自定义验证方法,它基本上允许一个空白输入字段,但是一旦有人在其中输入内容,它就会验证输入的数据。
我的提交模型中的验证看起来像这样(所有其他验证规则都在工作,除了“描述”):
var $validate = array(
'title' => array(
'title' => array(
'rule' => 'notEmpty',
'required' => true,
'allowEmpty' => false,
'message' => 'Please enter a title'
),
'minLength' => array(
'rule' => array('minLength', 5),
'message' => 'Please make your title longer'
),
'maxLength' => array(
'rule' => array('maxLength', 300),
'message' => 'Your title needs to be shorter'
),
),
'description' => array(
'checkDescription' => array(
'rule' => array('validateDescription'),
'message' => 'Description must be greater than 5 characters'
),
),
'source' => array(
'source' => array(
'rule' => 'notEmpty',
'required' => true,
'allowEmpty' => false,
'message' => 'Enter a valid source URL'
),
'website' => array(
'rule' => 'url',
'message' => 'Please enter a valid source URL'
),
)
);
我的方法也在我的提交模型中(在上面的代码下方)是:
public function validateDescription($data) {
if(empty($data['Submission']['description']))
return true;
if((strlen($data['Submission']['description'])) <= 5)
return false;
}
我不确定为什么这根本不起作用。在我看来,我有这个来显示错误:
if ($form->isFieldError('Submission.description'))
echo ($form->error('Submission.description', null, array('class' => 'error')));
我尝试这样做的唯一原因是因为使用required => false 和allowEmpty => true 的正常验证以及minLength 和maxLength 验证规则的行为不符合我的预期。
任何帮助将不胜感激! :)
【问题讨论】:
标签: php validation cakephp model cakephp-1.3