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

时间:2013-07-08 09:30:07

标签: php forms codeigniter session

我用谷歌搜索过,在PHP本身,JavaScript / jQuery / AJAX和CodeIgniter会话数据/ flash数据中有很多方法可以做到这一点。

但我更喜欢在PHP中这样做。我的表单非常大,包含不同的元素,如文本输入,下拉菜单,收音机等。但是我在View(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中解决这个问题,但这将是一个巨大的过程并分割代码。还有其他方法吗?欢迎举例!

3 个答案:

答案 0 :(得分:10)

codeigniter有set_value你只需输入你的输入名称就像示例一样。 如果验证为false,则只保留您之前输入的值。 例如:

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

完整的文档在这里。

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

答案 1 :(得分:1)

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

示例:

在您提交它的控制器上:

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

在视图上添加:

extract($post);

答案 2 :(得分:0)

您可以通过执行

来消除错误

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

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