首页 > 解决方案 > Codeigniter 验证总是返回 false 但 validation_errors() 为空

问题描述

我正在使用来自https://github.com/jamierumbelow/codeigniter-base-model存储库的 MY_Model。它使用来自 Codeigniter 的内置验证库。

问题是我的模型中的验证总是失败。但 validation_error() 是空的。这是我的规则:

protected $validate = [
    [
        'field' => 'text',
        'label' => 'text',
        'rules' => 'required',
    ]
];

这是我的控制器代码:

$fields = [
    'title'=>'test title',
    'text' => 'message text',
    'user_id_from' => '1',
    'user_id_to' => '1'
];

$this->message_model->insert($fields);

这就是它在库中的使用方式:

$this->form_validation->set_rules($this->validate);

if ($this->form_validation->run() === TRUE)
{
    return $data;
}
else
{
    $this->validation_error = validation_errors();
    return FALSE;
}

$this->validation_error 始终为空且验证始终失败

标签: validationcodeigniter-3my-model-jami

解决方案


MY_Model 库中有一个错误。

当数据源类型不是“post”时,将跳过验证。要启用使用“get”的库,请在 set_rules 方法之前将此行添加到库中:

$this->form_validation->set_data($data);

这在这里解释: https ://www.codeigniter.com/userguide3/libraries/form_validation.html#validating-an-array-other-than-post


推荐阅读