【发布时间】:2014-06-18 01:01:55
【问题描述】:
我在视图中有一个 html 表单,该表单在其控制器中设置了验证规则,我遇到的问题是,当有人发送无效数据时,我想在客户端维护这些字段中的数据,如果我重新加载视图,字段被清除,我该如何维护数据中的字段?
【问题讨论】:
标签: php codeigniter validation
我在视图中有一个 html 表单,该表单在其控制器中设置了验证规则,我遇到的问题是,当有人发送无效数据时,我想在客户端维护这些字段中的数据,如果我重新加载视图,字段被清除,我该如何维护数据中的字段?
【问题讨论】:
标签: php codeigniter validation
假设您正在对输入字段进行长时间编码:
<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()。
【讨论】:
请阅读此CI Documentation。
使用set_value() 可以防止codeigniter 在验证失败时清除表单输入字段。
喜欢:
<h5>Username</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
【讨论】:
有两种方法可以避免这种情况。
首先,您可以使用 ajax 提交代替 get 或 post 提交。如果您 ajax 提交成功,那么您使用 javascript 提交您的表单!
另一种避免将提交数据存储到会话的方法。如果有效失败,则将会话存储的数据重新加载到您的视图中!
【讨论】:
如果您真的想在重新加载视图后保留这些值,则需要使用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
【讨论】: