我已经创建了以下方法,以便对提交的数据进行验证。
public function validate_create($array) {
$array = Validation::factory($array)
-> rules('username', $this - > _rules['username']);
return $array;
}
规则定义为
protected $_rules = array(
'username' = > array(
'not_empty' = > NULL,
'min_length' = > array(6),
'max_length' = > array(32),
)
);
尝试执行check()方法时,代码抛出以下异常。
ErrorException [Warning]:call_user_func_array()需要参数1 是一个有效的回调,没有给出的数组或字符串
任何人都可以建议如何解决这个问题吗?
在signup.php中,用户名的输入字段定义为
< ?php echo Form :: label(' user_name',' Username')? > < ?php echo 形式::输入('用户名&#39); ? >
答案 0 :(得分:1)
直接构建Validation
对象的格式与$_rules
数组的格式不同。
您可以看到正确的方法签名和定义documented here,并且阅读signature for Validation::rule
可能是个好主意。
简而言之,rules()
方法需要一个数组列表,其中每个内部数组的第一个元素是验证函数,第二个元素是传递给它的参数数组。
e.g。
$rules = array(
array('not_empty', NULL),
array('min_length', array(':value', 6))
);
$v = Validation::factory($values)
->rules('fieldname', $rules);
请注意,这与您尝试使用的$_rules
数组(映射)格式不同,其中键是验证函数,参数是值。
Aslo,您是否有任何理由构建自己的验证功能而不是使用ORM::rules()
method验证?