Codeigniter表单验证返回始终为false

In my codeigniter controller function call $this->form_validation->run(), that return always false, and my validation_errors() not showing error, probably because not receive datas in post method...

my controller

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();
    }

}

my view

<?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(); ?>

In order to get the entire $_POST array using CodeIgniters built-in methods, you have to set the first parameter as NULL and the second parameter as TRUE

Like this:

$this->input->post(NULL, TRUE);

Also, you have not set any rules for validation..

In CodeIgniter, you set rules in the third parameter of the set_rules method within the form_validation object.

Like this:

$this->form_validation->set_rules($FIELD_NAME, $FIELD_NAME(for error messages), $RULES);

You would substitute the first $FIELD_NAME with the value of the name attribute on the HTML element you are looking to validate.

You would substitute the second $FIELD_NAME with the name you would like to use for the field when displaying an error message to the user.

You would substitute $RULES with the validation rules such as: 'required|min_length[#]|max_length[#]'

Hope this helps!

If you are not setting rules (which makes it rather pointless to use $this->form_validation->set_rules()) the form validation will fail as it's missing a required parameter.

If you don't need to validate a field, don't set a rule.

Try updating your set_rules instruction to $this->form_validation->set_rules('selectUser','selectUser', 'required'); to see if it behaves correctly. You can verify by filling something in the form (validation will pass) or leaving the field blank (validation will fail)

Just remember, if you won't set at least one validation rule for a field, don't instantiate the set_rules method for that field