为了对提交的数据进行验证,我创建了以下方法。
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[警告]:call_user_func_array()需要参数1是一个有效的回调,没有给定的数组或字符串
有人能建议如何解决这个问题吗?
在signup.php中,用户名的输入字段被定义为
<php echo Form::label('user_name','Username')?><php echo表单::input('username');?>
直接构建Validation
对象的格式与$_rules
数组的格式不同。
您可以看到这里记录的正确方法签名和定义,同时阅读Validation::rule
的签名可能是个好主意。
简而言之,rules()
方法需要一个数组列表,其中对于每个内部数组,第一个元素是验证函数,第二个元素是要传递给它的参数数组
例如
$rules = array(
array('not_empty', NULL),
array('min_length', array(':value', 6))
);
$v = Validation::factory($values)
->rules('fieldname', $rules);
请注意,这与您尝试使用的$_rules
数组(映射)格式不同,其中键是验证函数,参数是值。
Aslo,你为什么要构建自己的验证函数,而不是使用ORM::rules()
验证方法?