表单验证运行false时返回输入值

时间:2016-04-05 12:42:51

标签: php codeigniter validation hmvc

查看

<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();我想要的只是当它重定向回来时,我输入的数据将保留。所以当验证失败时我不会再输入它。

3 个答案:

答案 0 :(得分:1)

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

<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在发生错误后重新填充表单。

答案 1 :(得分:0)

您可以使用set_value功能。

查看文件

UrlController.getInstance()

答案 2 :(得分:0)


获取这样的发布值

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>