当表单验证运行 false 时输入值 returns

input value returns when form validation runs false

查看

<div class="box-body">
    <div class="form-group">
        <label for="FNAME" class="col-sm-2 control-label col-sm-offset-2">  <span>*</span>First Name:</label>
        <div class="col-sm-5">
            <input type="text" class="form-control" id="FNAME" name="FNAME">
        </div>
    </div>
    <div class="form-group has-error col-sm-offset-7">
        <label class="control-label" for="error"><?php echo form_error("FNAME"); ?></label>
    </div>
</div>

控制器

public function create_id() {

    $this->form_validation->set_rules('FNAME', 'First Name'         ,'trim|required|max_length[30]');
    $this->form_validation->set_rules('MNAME', 'Middle Name'            ,'trim|max_length[30]');
    $this->form_validation->set_rules('SURNAME', 'Last Name'                ,'trim|required|max_length[30]');

    if($this->form_validation->run($this) == FALSE) {
        $this->add_view();
    } else {
        if($query = $this->Employees_Model->insert()) {
            $this->autoid();
            redirect('Employees/index');
        } else {
            $this->add_view();
        }
    }   
}

我想要的是if($this->form_validation->run($this) == FALSE){如您所见,它将重定向回视图。 $this->add_view();我想要的只是当它重定向回来时,我输入的数据将保留。这样我在验证失败的时候就不会再输入了。

您可以使用set_value函数。

查看文件

<input type="text" class="form-control" id="FNAME" name="FNAME" value="<?php echo set_value('FNAME'); ?>">

根据 CodeIgniter 文档,您需要稍微更改视图文件,即在输入 element _value_ parameter 中使用 <?= set_value("FNAME"); ?> 打印那些输入元素值。所以你的

<input type="text" class="form-control" id="FNAME" name="FNAME">

会变成

<input type="text" class="form-control" id="FNAME" name="FNAME" value="<?= set_value("FNAME"); ?>">

等等。这样您将告诉 CodeIgniter 在出错后重新填充表单。


像这样获取发布值

public function create_id() {

    $this->form_validation->set_rules('FNAME',      'First Name'            ,'trim|required|max_length[30]');
    $this->form_validation->set_rules('MNAME',      'Middle Name'           ,'trim|max_length[30]');
    $this->form_validation->set_rules('SURNAME',    'Last Name'             ,'trim|required|max_length[30]');

    $data = array(
       'FNAME' => $this->input->post('FNAME'),
       'MNAME' => $this->input->post('MNAME'),
       'SURNAME' => $this->input->post('SURNAME')
    );

    if($this->form_validation->run($this) == FALSE) {
        $this->add_view($data);
    } else {
        if($query = $this->Employees_Model->insert()) {
            $this->autoid();
            redirect('Employees/index');

        } else {
            $this->add_view();
        }
   }
}

在你的函数中

function add_view($data){
    .............................
    .............................
    $this->data['values'] = $data;
    .............................
    .............................

}

然后

<div class="box-body">
      <div class="form-group">
        <label for="FNAME" class="col-sm-2 control-label col-sm-offset-2"><span>*</span>First Name:</label>
          <div class="col-sm-5">
            <input type="text" class="form-control" id="FNAME" name="FNAME" value="<?= $values['FNAME'] ?>">
          </div>
      </div>
      <div class="form-group has-error col-sm-offset-7">
        <label class="control-label" for="error"><?php echo form_error("FNAME"); ?></label>
      </div>
    </div>