我正在尝试验证两个数组
$this->form_validation->set_data();
和开机自检数据
$this->form_validation->set_rules();
在相同的方法中...
当尝试在我的控制器中使用这两种验证类型时,数组验证似乎正在从 POST 字段中删除所有数据。我正在使用JS抓取订单行项目并将它们作为JSON发送并解码(从不是表单一部分的表中,但值被添加到隐藏的表单字段中以使用poststill抓取),以及客户详细信息添加到表单本身。
我遇到的问题是我编写的每个验证(POST 和 Array)都可以独立工作,但是当尝试同时运行两者时,在页面上提交 POST 数据(使用 $this->form_validation->set_rules()
进行验证)正在丢失......
由于隐藏字段的验证方式不同,因此将保留数据...
任何在查找后需要知道这一点的人(甚至在发布问题之前就花了很长时间)
对于您设置的每个验证组,必须先使用 $this->form_validation->run()
运行验证,然后再转到下一个组/方法。
要验证 POST 数据,请创建所有规则,然后立即运行它:
// Order Post Validations
$this->form_validation->set_rules("firstname", "First Name", "trim|required");
$this->form_validation->set_rules("lastname", "Last Name", "trim|required");
//run this section
$this->form_validation->run();
然后继续前进,
$this->form_validation->set_data($ValidationData);
$this->form_validation->set_rules($ValidationRules);
//run this section
$this->form_validation->run();
事实证明,CI 将覆盖您在设置新组时所做的任何现有验证(即使尝试将它们作为单独的数组/组一起运行)。