在我的codeigniter控制器函数调用$this->form_validation->run()
中,该返回始终为false,而我的validation_errors()
未显示错误,可能是因为未在post方法中接收数据...
我的控制器
class Reminder extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('reminder_model');
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->helper('url');
$this->load->library('email');
$this->load->library('session');
if(!$this->session->auth_ok) {
redirect('auth/login');
}
}
public function index(){
$data['title'] = 'Reminder';
$data['section'] = 'reminder';
$data['reminders'] = $this->reminder_model->getReminders();
$data['operatori'] = $this->reminder_model->getOperators();
$this->form_validation->set_rules('selectUser','selectUser', '');
if($this->form_validation->run() === FALSE) {
$this->load->view('common/header2', $data);
$this->load->view('reminder/index', $data);
$this->load->view('common/footerReminder');
echo validation_errors();
}else{
echo "<pre>";
print_r($this->input->post());
die();
}
}
我的观点
<?php echo form_open('reminder/index'); ?>
<div class="form-group">
<label for="selectUser" style=" width: 30%">Utente: </label>
<select class="form-control" name="selectUser" id="selectUser" style="width: 30%">
<?php foreach($operatori as $operatore): ?>
<option value="<?php echo $operatore['ID']?>" <?php echo $r = ($operatore['ID']==$this->session->auth_user['ID']) ? 'selected' : '' ?>><?php echo $operatore['nome']." ".$operatore['cognome'] ?></option>
<?php endforeach; ?>
</select>
</div>
<button type="submit" class="btn btn-primary"><i class="fas fa-search"></i> View</button>
<?php echo form_close(); ?>
答案 0 :(得分:2)
为了使用CodeIgniters内置方法获取整个$ _POST数组,必须将第一个参数设置为NULL
,第二个参数设置为TRUE
赞:
$this->input->post(NULL, TRUE);
此外,您还没有设置任何验证规则。
在CodeIgniter中,您可以在set_rules
对象内form_validation
方法的第三个参数中设置规则。
赞:
$this->form_validation->set_rules($FIELD_NAME, $FIELD_NAME(for error messages), $RULES);
您要用要验证的HTML元素上的name属性值替换第一个$FIELD_NAME
。
在向用户显示错误消息时,您要用第二个$FIELD_NAME
替换为要用于该字段的名称。
您可以将$RULES
替换为验证规则,例如:'required|min_length[#]|max_length[#]'
希望这会有所帮助!