【问题标题】:Codeigniter validate POST and array dataCodeigniter 验证 POST 和数组数据
【发布时间】:2016-09-26 11:22:34
【问题描述】:

我正在尝试验证两个数组

$this->form_validation->set_data();

和 POST 数据

$this->form_validation->set_rules();

同样的方法...

当尝试在我的控制器中使用这两种验证类型时,数组验证似乎正在从 POST 字段中删除所有数据。我正在使用 JS 抓取订单行项目并将它们作为 JSON 发送并解码(从不是表单的一部分但值被添加到隐藏的表单字段以使用 post 仍然抓取),并添加了客户详细信息在表单本身内。

我遇到的问题是我编写的每个验证(POST 和数组)都可以独立工作,但是当尝试同时运行这两个验证时,在页面上提交 POST 数据(正在使用$this->form_validation->set_rules() 进行验证)正在丢失...

由于没有以相同的方式验证隐藏字段,因此正在保留数据...

【问题讨论】:

    标签: php codeigniter validation


    【解决方案1】:

    任何人都需要在查找后知道这一点(在发布问题之前花了很长时间)

    对于您设置的每个验证组,您必须使用 $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 会覆盖您所做的任何现有验证(即使尝试将它们作为单独的数组/组一起运行)。

    【讨论】:

    • 另一个选项可能是将$_POST 数组与$ValidationData 合并,并将结果数组用作set_data() 的参数;显然,你需要在$this->form_validation->run();之前设置所有适用的规则
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2020-08-25
    • 1970-01-01
    • 2011-07-10
    • 2017-08-28
    • 2017-02-17
    • 2014-10-17
    相关资源
    最近更新 更多