Codeigniter 3表单验证回调不起作用

时间:2015-11-09 21:19:42

标签: php codeigniter

我的codeigniter验证中有一个自定义回调没有被调用,我只能找出错误的位置。

这是我的控制者:

$this->form_validation->set_error_delimiters('', '');
$this->form_validation->set_rules('pedido', 'numero de pedido', 'trim|required|integer');
$this->form_validation->set_rules('cliente', 'nombre del cliente', 'trim|required|alpha_numeric_spaces');
$this->form_validation->set_rules('motivo', 'motivo de la devolucion', 'trim|required|alpha_numeric_spaces');
$this->form_validation->set_rules('imagen', 'imagen', 'callback_handle_upload');

if ($this->form_validation->run() == FALSE) {
    $error_array = array(
        'pedido' => form_error('pedido'),
        'cliente' => form_error('cliente'),
        'motivo' => form_error('motivo'),
        'imagen' => form_error('imagen')
    );

    $this->session->set_userdata('notify', $error_array);
    redirect('garantias-y-devoluciones');
    die();
}

这是我的回调函数

public function handle_upload($str)
{
    $this->form_validation->set_message('imagen', 'The {field} has an error.');
    return FALSE;
}

它应该触发错误但不是。

4 个答案:

答案 0 :(得分:9)

解决。!如果有人得到同样的错误,这就是我如何解决它,这是HMVC的一个错误“在将当前控制器作为$ CI变量分配给form_validation库之前。这将允许你的回调方法正常运行。”

只需在MY_Form_validation

中添加public $CI即可

然后在你的控制器构造函数上:

$this->load->library('form_validation');
        $this->form_validation->CI =& $this;

以下页面上的详细信息:https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc

答案 1 :(得分:0)

将回调方法重命名为" handle_upload"。例如:

/* ... your code ... */
$this->form_validation->set_rules('imagen', 'imagen', 'callback_handle_upload');
/* ... your code ... */

public function handle_upload($msg){/* your validation code */}

答案 2 :(得分:0)

我知道情况并非总是如此,但是如果您使用的是Ubuntu,则最好检查是否启用了mod rewrite,如果没有启用,则Apache会加载自己的文件,而不是codeigniter-> database.php文件...

答案 3 :(得分:-1)

只需将您的回调函数重命名为handle_upload即可。正如CI文档中所说To invoke a callback just put the function name in a rule, with "callback_" as the rule prefix.