我的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;
}
它应该触发错误但不是。
答案 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.