CodeIgniter的set_value()没有重新填充

Jul*_*oro 5 php codeigniter

我检查并重新检查了我的代码,引用了整个网络上的CI文档和其他帖子,但是我没有成功实现set_value()方法,以便在验证失败后重新填充表单字段.也许我错过了CI框架的一些非常重要的东西(我对它很新),但是你的见解会非常感激.

我的控制器方法中有以下内容:

public function form_step2(){
    //Form Setup
    $this->load->helper('form');
    $this->load->helper('url');
    $this->load->library('form_validation');
    $data['title'] = $this->base_title;
    $data['base_url'] = base_url();

    //Validation Settings - must be set per step
    $this->form_validation->set_rules('request_type', 'Request Type', 'required');
    *...more of the same set_rules()*


    if ($this->form_validation->run() === FALSE) {
        ### Validation failed or New Form

        // Get form element data
        $data['request_types'] = $this->my_model->get_form_data('request_type');
        *...more of the same get_form_data() calls for loading form elements*

        //Generate Page from View Templates
        $this->load->view('templates/header', $data);
        $this->load->view('templates/form_step2', $data);
        $this->load->view('templates/footer');
    } else {
        ### Save to database
        $this->my_model->set_data($data);

        redirect('my_model/success','refresh');
    }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,一段没有重新填充的代码片段:

<?php echo form_open('my_model/form_step2', array('class'=>'form-inline')); ?>

<label for="fname">First Name</label>
<input type="text" id="fname" name="fname" value="<?php echo set_value('fname'); ?>" />
<input type="submit" name="submit" value="Submit" />
Run Code Online (Sandbox Code Playgroud)

我无法想出这个,所以提前感谢你的帮助.

Kys*_*lik 13

如果你想使用set_data()你还需要set_rules用于那个POST/GET字段.

既然你已经注释掉了所有的set_rules,我无法确认这是问题,但很有可能.

请检查您的代码中是否包含此行

$this->form_validation->set_rules('fname', 'First name', 'trim|required');

因此,如果你想重新填充字段,name="fname"你需要拥有set_rules() // as line above它,否则它将不会处理因此set_value('fname')是空的.

  • 谢谢,为了让人口重新开始工作,需要一条规则,这真是令人讨厌,但这就是我错误的地方. (4认同)