CodeIgniter:提交无效表单后如何保留值?

Posted

技术标签:

【中文标题】CodeIgniter:提交无效表单后如何保留值?【英文标题】:CodeIgniter: How can I retain values after an invalid form submission? 【发布时间】:2013-07-05 14:01:41 【问题描述】:

我在 Google 上搜索过,在 php 本身、javascript/jQuery/AJAX 和 CodeIgniter 会话数据/flash 数据中有很多方法可以做到这一点。

但我更喜欢在 PHP 中执行此操作。我的表单非常大,包含不同的元素,如文本输入、下拉菜单、收音机等。但是我在视图 (MVC) 中的输入上尝试了以下操作。

例子:

< input type="radio" name "gender" value="Male" <?php echo ($gender == 'Male')? 'checked': ''; ? />
< input type="radio" name "gender" value="Female" <?php echo ($gender == 'Female')? 'checked': ''; ? />

这会在页面加载时出错,显然是因为未定义 $gender 变量。我可以在 Controller 中解决这个问题,但这将是一个巨大的过程并且会分散代码。有没有替代方法?欢迎举例!

【问题讨论】:

您可以通过 (isset($gender)&&$gender=='Male')) 来消除错误?等 不知道Man behind NSA leaks为什么要学PHP 因为php太漏了 ellislab.com/codeigniter/user-guide/libraries/… @NullPoiиteя 因为我现在必须在厄瓜多尔找到一份工作。哈哈 【参考方案1】:

codeigniter 有 set_value,你只需在里面输入你的输入名称,就像例子一样。 如果验证为假,它只会保留您之前输入的值。 示例:

 <input type='text' name='last_name' id='last_name' value="<?=set_value('last_name')?>" />

完整的文档在这里。

http://www.codeigniter.com/user_guide/libraries/

【讨论】:

【参考方案2】:

你可以通过这样做来摆脱错误

(isset($gender)&amp;&amp;$gender=='Male'))

另请阅读http://www.codeigniter.com/user_guide/libraries/form_validation.html#re-populating-the-form

【讨论】:

【参考方案3】:

将帖子数据添加到您的视图数据 警告:根据您的问题和代码,这是一种肮脏而懒惰的方式:

示例:

在您提交它的控制器上:

function submit()
 $data->post = $this->input->post();
 $this->load->view('view', $data);

在视图上添加:

extract($post);

【讨论】:

谢谢。但是正如上面提到的'allen213',还有更懒惰的方法来做到这一点。那就是 CodeIgniter 的:set_value()、set_select()、set_checkbox()、set_radio() 函数。否则,使用框架将毫无意义,对吧? :)

以上是关于CodeIgniter:提交无效表单后如何保留值?的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 表单验证 - 成功后如何取消设置表单值?

提交 PHP 后保留表单值

发布后如何保留表单值[重复]

提交 Codeigniter 后如何获取引导 html 表单的详细视图

刷新表单时如何保留过去的值?

CodeIgniter 2.1.3 - 表单助手 - 无法提交数据