在CodeIgniter中设置$ _POST将覆盖表单验证..?
问题描述:
所以在这篇文章中How do you set a CodeIgniter radio button, before it's in the $_POST? TwiStar解释了如何修改$ _POST变量,这很好...除了它好像覆盖了CodeIgniter表单验证函数。
if ($this->form_validation->run() === FALSE) {...}
这可能是由于我的设计...我有一些数据,我用预填充我的形式,我呈现给用户查看和修改,如果他们的愿望。预填充(不幸的是,在这种情况下)为表单验证提供了准确的数据。
所以我猜CodeIgniter的form_validation->run()
是真的,当$ _POST包含正确的内容,这意味着我的表单验证是在我开始之前。
如果我忽略了其中一个预填充值,我会得到糟糕的用户体验。
我该如何处理这个更好?
答
我发现问题似乎更多的是设计和流程。
问题: 想要用数据库值预先填充表单,然后允许用户修改它们,并通过表单验证提交它们。
解决办法:
在控制器我没有尝试与
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 : " ")); ?> />