Kohana-规则方法抛出错误


Kohana - rules method throwing error

为了对提交的数据进行验证,我创建了以下方法。

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()验证方法?

相关文章: