当表单验证运行 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>
查看
<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>