我正在尝试使用CodeIgniters表单验证库,尽管我的验证规则似乎有效,但每当我调用validation_errors()时,我都会得到一个空字符串。
这是一个代码段。
$base_rules = 'required|trim';
$this->_validation_rules = array(
array(
'field' => 'name',
'label' => 'name',
'rules' => $base_rules . '|alpha_numeric|min_length[5]|max_length[30]'
),
array(
'field' => 'price',
'label' => 'Price',
'rules' => $base_rules . '|decimal'
),
array(
'field' => 'duration',
'label' => 'Duration',
'rules' => $base_rules . '|integer'
),
array(
'field' => 'booking',
'label' => 'Booking',
'rules' => $base_rules . '|integer'
)
);
$this->form_validation->set_rules($this->_validation_rules);
if ($this->form_validation->run()) {
// do stuff
}else{
// prints an empty string
var_dump(validation_errors());
exit;
}
有谁知道为什么会这样,我怎么能得到我的错误?
答案 0 :(得分:5)
将validation_errors()放在表单的顶部,并将代码更改为
if ($this->form_validation->run()) {
// do stuff
}else{
$this->load->view('myform'); //display your form again
}
validation_errors()只能在视图中弹出。
答案 1 :(得分:1)
将此代码放在视图文件
中echo validation_errors('<div>', '</div>');
然后将其改为
else{
$this->load->view('myform'); //display your form again
}
答案 2 :(得分:1)
要完成约翰回答,如果你做了一个表格帖子,你可以把它放在你的输入下:
<?php echo form_error('input-name'); ?>
但是,如果您正在提出ajax请求(现在不是您的情况,但如果您需要,将来会发生) 你可以使用validation_errors()。
这是一个例子:
//Important to turn that off if it's on
$this->output->enable_profiler(false);
$this->output->set_status_header('500');
$this->output->set_content_type('application/json');
echo json_encode(array(
'error_msg' => validation_errors(),
));
然后在您的客户端,您可以使用这样的响应:
error:function(data) {
$("your-error-input-selector").html('').append(data.responseJSON.msg);
}
希望我帮助即使我迟到了一年。
P.S抱歉我的英语不好。