Codeigniter表单验证返回始终为false

时间:2018-09-14 13:21:32

标签: php html codeigniter

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

1 个答案:

答案 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[#]'

希望这会有所帮助!