我正在尝试在Cake中的几个模型中实现自定义验证行为。我是框架和php的新手,并且可能容易出现愚蠢的错误。
我遇到的问题是我的自定义验证函数的第一个参数正在填充正在验证的模型而不是数组('fieldname'=>'input'),文档似乎说应该在那里。我得到的是:
class Policy extends AppModel {
var $actsAs = array('JsonValidation');
var $validate = array(
'field1' => array(
'rule' => 'myValidationRule',
'message' => 'Please enter valid stuff.'
),
'field2' => array(
'rule' => myValidationRule',
'message' => 'Please enter valid my.'
));
....
class MyValidationBehavior extends ModelBehavior {
function myValidationRule($check, $allowEmpty = false){
debug($check); //prints out the Policy model
$input = array_shift($check); //errors since $check isn't an array
debug($input);
if($allowEmpty && trim($input) == "") return true;
if(isValid($input)) return false;
return true;
}
关于我做错了什么或者如何在这种情况下获得用户输入的任何想法?
谢谢, 洛伦
工作方案:
var $validate = array(
'rules' => array(
'rule' => array('myValidationRule', true),
'message' => 'Please enter something valid.'
),
'rule_parms' => array(
'rule' => array('myValidationRule', true),
'message' => 'Please enter something valid.'
));
function myValidationRule($Model, $check, $allowEmpty){
$input = array_shift($check);
if($allowEmpty && trim($input) == "") return true;
if(valid($input) == null) return false;
return true;
}