在CodeIgniter中设置$ _POST会覆盖表单验证..?

时间:2014-07-09 03:11:14

标签: php forms codeigniter

所以在这篇文章How do you set a CodeIgniter radio button, before it's in the $_POST?中,TwiStar解释了如何修改$ _POST变量,这很好......除了它似乎覆盖CodeIgniter表单验证函数。

if ($this->form_validation->run() === FALSE) {...}

这可能是由于我的设计...我有一些数据用于预填充我的表单,如果他们愿意,我会提交给用户查看和修改。预填充(不幸的是,在这种情况下)提供了表单验证的确切数据。

所以我猜想当$ _POST包含正确的内容时CodeIgniter的form_validation->run()为真,这意味着我的表单验证在我开始之前就已经存在了。

如果我遗漏了一个预先填充的值,我会得到一个糟糕的用户体验。

我怎样才能更好地处理这个问题?

1 个答案:

答案 0 :(得分:0)

我发现问题似乎更像是设计和流程。

问题: 想要使用数据库值预先填充表单,然后允许用户修改它们,并通过表单验证提交它们。

解决方案:

  • 在控制器中,我没有尝试使用if (!isset($_POST['myradio'])) {...}修改$ _POST值

  • 在表单中,我确实使用了set_radio()函数,特别是关于默认值的第三个参数。

HTML

<input type="radio" name="target" value="direct" <?php echo set_radio('target', "direct", ($data['target'] === 'direct' ? TRUE : " ") ); ?> />