GET 方法的 Codeigniter(3) 表单验证总是 returns FALSE

Codeigniter(3) form validation always returns FALSE for GET method

codeigniter 表单验证对于 GET 方法无法正常工作,它 returns 始终为假(即使所有输入字段都正确)并且不显示错误消息。但是当我尝试使用 POST 方法时,它工作正常并在输入字段错误时显示错误消息。

下面是包含 3 个输入字段的 HTML 表单,所有字段都是必填字段,我正在检查验证。

            **<form action="" method="get" name="ak-api-log" id="ak-api-log-form" autocomplete="off">**
                    <div class="row">
                        <div class="col-md-3">
                            <div class="form-group">
                              <label class="bmd-label-floating">API</label>
                              **<select name="ak_api_type" class="form-control">
                                <option value="all">All</option>
                                <option value="admin">Admin</option>
                                <option value="editor">Editor</option>
                              </select>**
                            <?php echo form_error('ak_api_type', '<div class="error">', '</div>'); ?>
                            </div>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                              <label class="bmd-label-floating">From</label>
                              **<input type="text" name="ak_api_from_date" class="form-control" id="ak-api-from-date"">**
                              <?php echo form_error('ak_api_from_date', '<div class="error">', '</div>'); ?>
                            </div>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                              <label class="bmd-label-floating">To</label>
                              **<input type="text" name="ak_api_to_date" class="form-control" id="ak-api-to-date">**
                              <?php echo form_error('ak_api_to_date', '<div class="error">', '</div>'); ?>
                            </div>
                        </div>
                        <div class="col-md-3">
                            <button type="submit" id="userBtn" class="btn btn-primary pull-right"><i class="fa fa-search"></i> Search</button>
                        </div>
                    </div>
                **</form>**

下面是我的控制器代码。我删除了问题不需要的代码。

public function api_log(){
    $this->form_validation->set_rules('ak_api_type', 'ak_api_type', 'required');
    $this->form_validation->set_rules('ak_api_from_date', 'ak_api_from_date', 'required');
    $this->form_validation->set_rules('ak_api_to_date', 'ak_api_to_date', 'required');

    if ($this->form_validation->run() == FALSE){
        $this->template->view(strtolower(__CLASS__).'/'.__FUNCTION__);
    }else {
        echo 'true';exit;
    }
 }

快速解决方案将不胜感激。提前致谢!

Codeigniter 表单验证不支持 GET 方法或除 POST 之外的任何其他方法。

您可能需要如下替代解决方案。


// before creating the form validation rule.

$dataToValidate = $this->input->get();

// or you can set this data manually as below


$dataToValidate = array(
        'username' => 'johndoe',
        'password' => 'mypassword',
        'passconf' => 'mypassword'
);


// followed by
$this->form_validation->set_data($dataToValidate);

您可以像上面一样在 Codeigniter 中轻松设置自定义数据。

阅读参考:https://codeigniter.com/user_guide/libraries/form_validation.html#validating-an-array-other-than-post