Kohana - 规则方法抛出错误

时间:2014-04-17 19:21:25

标签: php kohana

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

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); ? >

1 个答案:

答案 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验证?