我在视图中有一个html表单,在其控制器中设置了验证规则,我遇到的问题是,当有人发送的数据无效时,我想维护客户端那些字段中的数据,如果我重新加载视图,字段被清除,我该如何维护数据中的字段?
答案 0 :(得分:2)
假设您对输入字段进行了很长时间的编码:
<input type="text" name="quantity" value="" />
您可以使用Form Helper的set_value()
功能将值返回到输入。
<input type="text" name="quantity" value="<?php echo set_value('quantity');?>" />
对于<select>
字段,复选框和单选按钮,有set_select()
,set_checkbox()
和set_radio()
。
答案 1 :(得分:1)
请阅读 CI Documentation 。
使用set_value()
可以防止codeigniter在不成功验证时清除输入字段。
喜欢:
<h5>Username</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
答案 2 :(得分:0)
有两种方法可以避免这种情况。
首先,您可以使用ajax提交而不是获取或发布提交。如果您成功提交ajax,那么您使用javascript提交表单!
另一种避免此方法的方法是将会议数据存储到会话中。如果有效失败,请将会话存储的数据重新输入到重新播放的视图中!
答案 3 :(得分:0)
如果您确实想在重新加载视图后保留这些值,则需要使用session user_data或将值存储在数据库中的某个位置。我不认为这就是你的意思,我认为你指的是提交后显示的数据(也就是$_POST
数据)。
在您的视图中,您可以使用这样的三元运算符:
<input type="text" name="first_name" value="<?=isset($_POST['first_name'] ? $_POST['first_name'] : NULL ?>"/>
还有其他方法可以从您的控制器管理它。例如,您可以从控制器中定义变量$first_name
,如下所示:
if(isset($_POST[]){
//form_validation
$vars['first_name'] = $this->input->post('first_name');
}else{
$vars['first_name'] = NULL;
}
$this->load->view('your_view',$vars);
然后在您的视图中,您只需将输入值设置为$first_name