如何解决CodeIgniter:使用多维POST数据验证表单
|| 因此,框架为CodeIgniter 2.0.2。我有一个表单,其中包含与数据库中的行相对应的字段组。字段名称的格式为:opt[0][foo]
opt[0][bar]
opt[1][foo]
opt[1][bar]
etc...
索引(1,2,etc ...)与数据库中的行ID不对应,它只是一种拆分字段组的方法。由于用户能够添加和删除任意数量的字段组,因此索引中可能会有空白。所有组都是相同的,也就是说,它们包含具有完全相同的第二级名称的完全相同的字段集。
我希望能够使用CodeIgniter的验证库来验证表单并根据需要(p)重新填充。我已经找到了很多有关预填充的文章(除了出色的CI用户指南),而且我知道一般如何使用重新填充的内容。但是,这是我第一次必须使用上述索引字段名称进行尝试。我已经尝试了以下方法,但不起作用:
array(
\'field\' => \'opt[][foo]\',\'label\' => \'Foo\',\'rules\' => \'required\'
)
我猜我只是希望太多而CodeIgniter不支持我需要它做的事情。扩展现有的表单验证库是一种选择,因此,如果有人遇到同样的情况,并可以提供一些非常欢迎的技巧。
更新:
只是一点点额外的信息,我也尝试过验证特定索引的字段(请参见下文),而且也行不通...据我了解,多维验证应在特定情况下起作用:
array(
\'field\' => \'opt[0][foo]\',\'rules\' => \'required\'
)
解决方法
以下控制器代码在CI 2.0.2上对我有效
public function test() {
$this->load->library(\'form_validation\');
$this->load->helper(\'form\');
$this->form_validation->set_rules(\'test[test1][test2]\',\'Test\',\'required|valid_email\');
$this->form_validation->run();
echo validation_errors();
echo form_open($this->uri->uri_string());
echo form_input(\'test[test1][test2]\',set_value(\'test[test1][test2]\'));
echo form_submit();
echo form_close();
}
,您可以使用它遍历opt
变量并为每个输入设置验证规则。
if(!empty($opt))
{
foreach($opt as $id => $value)
{
$this->form_validation->set_rules(\'opt[\' . $id . \'][foo]\',\'Foo\',\'required\');
$this->form_validation->set_rules(\'opt[\' . $id . \'][bar]\',\'Bar\',\'required\');
}
}
,您应该看一下验证类的回调函数-这应该可以帮助您完成验证所需要的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。