我试图在cakephp 2.3中为非数据库字段调用自定义验证方法,但没有运气。简单地不调用验证方法。有人可以建议修复并解释这是否是蛋糕中的问题?
我的代码
public $validate = array(
'name' => array
(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank'
),
'password' => array
(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank',
'allowEmpty' => false
),
'verify_password' => array
(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank',
'allowEmpty' => false
),
'rule2' => array
(
'rule' => array('check_password'),
'message' => 'passwords must match each other',
'allowEmpty' => false
)
),
'email' => 'email',
);
其中“password”和“verify_passowrd”是非数据库字段。 自定义验证方法是
function check_password($check) {
$value = array_values($check);
$value = $value[0];
if($value == $this->data['User']['verify_password'])
return true;
else
return false;
}
永远不会调用自定义方法。
答案 0 :(得分:0)
首先尝试使用一个规则添加,然后尝试添加第二个规则,如果您希望从最终开始测试它是否有效
在这里,您可以检查以调用自定义函数。
public $validate = array(
'password' => array(
'rule' => 'check_password',
'message' => 'Slug can only be letters, numbers, dash and underscore'
)
);
模型自定义功能
function check_password($check) {
$value = array_values($check);
$value = $value[0];
if($value == $this->data['User']['verify_password'])
return true;
else
return false;
}
如果我能帮助你,请告诉我。
答案 1 :(得分:0)
rule2不是表单上的字段,但您为其分配了验证规则
如果你能正确识别你的代码,你会看到更好的错误
public $validate = array(
'name' => array(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank'
),
'password' => array(
'rule' => 'notEmpty',
'message' => 'This field cannot be left blank'
),
'verify_password' => array(
'notEmpty' => array(
'rule' => array('notEmpty'),
'message' => 'This field cannot be left blank'
),
'verify' => array(
'rule' => array('check_password'),
'message' => 'passwords must match each other'
)
),
'email' => 'email'
);
默认情况下,allowEmpty为false,而notEmpty规则
则不需要