Codeigniter 3将验证形式转换为数组

时间:2016-04-12 15:57:13

标签: php arrays codeigniter foreach

我正在使用codeigniter 3,而我正在尝试使用form_validation库。

基本上,如果验证失败,我会捕获输入数据,然后将其发送回表单。

所以我将所有表单数据都粘贴在一个数组中,如下所示:

            // add input data to array
            $org_data = array(
                'org_id'            => $this->input->post('org_id'),
                'p_org_id'          => $this->input->post('p_org_id'),
                'account_ref'       => $this->input->post('account_ref'),
                'org_name'          => $this->input->post('org_name'),
                'address1'          => $this->input->post('address1'),
                'address2'          => $this->input->post('address2'),
                'address3'          => $this->input->post('address3'),
                'town'              => $this->input->post('town'),
                'county'            => $this->input->post('county'),
                'pcode'             => $this->input->post('pcode'),
                'phone'             => $this->input->post('phone'),
                'support_email'     => $this->input->post('support_email'),
                'notify_return'     => $this->input->post('notify_return'),
                'notify_email'      => $this->input->post('notify_email'),
                'email_interval'    => $this->input->post('email_interval'),
                'renewal_date'      => $this->input->post('renewal_date'),
                'login_reminder'    => $this->input->post('login_reminder'),
                'default_fireaware' => $this->input->post('default_fireaware'),
                'open_training_url' => $this->input->post('open_training_url'),
            );

一切都很好!

现在,要将数据发送回表单,我正在使用以下内容。

        $this->data['org_id'] = array(
            'name'  => 'org_id',
            'id'    => 'org_id',
            'type'  => 'text',
            'value' => $this->form_validation->set_value('org_id'),
        );

BUT

我不想为每个输入创建其中一个,所以理想情况下我想使用循环创建这些。但我不能让它工作,我得到未定义的变量错误。

这是正在进行的循环:

        foreach($org_data as $key => $value){

            $this->data['$key'] = array(
                'name'  => '$key',
                'id'    => '$key',
                'type'  => 'text',
                'value' => $this->form_validation->set_value('$value'),
            );  

        }

我可以使用循环来执行此操作吗?

你有什么想法?

2 个答案:

答案 0 :(得分:0)

使用像这样的验证

$config = array(
           array(
                 'field'   => 'username', 
                 'label'   => 'Username', 
                 'rules'   => 'required'
              ),
           array(
                 'field'   => 'password', 
                 'label'   => 'Password', 
                 'rules'   => 'required'
              ),
           array(
                 'field'   => 'passconf', 
                 'label'   => 'Password Confirmation', 
                 'rules'   => 'required'
              ),   
           array(
                 'field'   => 'email', 
                 'label'   => 'Email', 
                 'rules'   => 'required'
              )
        );
        $this->form_validation->set_rules($config);
        if ($this->form_validation->run() == FALSE) {
            $data['errors']             = validation_errors();
            $this->load->view('yourview', $data);
          } else {
            $userData = $this->input->post();
            $this->load->view('yourview', $data);

        }

答案 1 :(得分:0)

  

基本上,如果验证失败,我会捕获输入数据然后   将其发回表格。

是的,我认为这是澄清的部分 - 你根本不需要这样做 - 这就是使用set_value(' fieldName')的优势,它会自动回显值。相同 - 在表单上 - 使用form_error(' fieldName'),它将显示特定于字段的错误消息。