表单验证不适用于CodeIgniter,控制器问题

时间:2011-08-10 06:07:20

标签: php codeigniter validation

我有一个控制器和一个视图。我试图通过表单提交一些细节,但是当我提交它时,不会显示任何错误。

我只为两种不同类型的用户使用一个控制器。这两个用户是 -

  1. 用户
  2. 健身房/健康俱乐部老板
  3. 根据$suertype,我有相同的视图被调用但是正在加载不同的内容。

    这是我的控制者:

    public function CreateProfile_Step2()
        {            
                $data['page_title'] = 'Create Profile (Step 2)';
    
                $loginid = $this->session->userdata('loginid');
    
                $this->load->model('profilemodel', 'profile');
                $userid = $this->profile->get_userid($loginid);
    
                $this->session->set_userdata('userid', $userid);
    
                $usertype = $this->profile->get_usertype($userid);
                $data['usertype'] = $usertype;
    
                if ($usertype == 'User') {
                    $this->load->model('activitymodel', 'activity');
                    $arr_activities = $this->activity->get_activities();
                    $data['options'] = $arr_activities;
                }
                else if ($usertype == 'Gym/Health Club Owner') {
                    $this->load->model('facilitymodel', 'facility');
                    $arr_facility = $this->facility->get_facilities();
                    $data['options'] = $arr_facility;
                }
    
                $config = array(
                    'User'  =>  array(
                                    array(
                                        'name'  => 'sex',
                                        'label' => 'Sex',
                                        'rules' => 'required'
                                    )),
                    'Gym/Health Club Owner' =>  array(
                                                    array(
                                                        'name'  => 'website',
                                                        'label' => 'Website',
                                                        'rules' => 'prep_url'
                                                    ),
                                                    array(
                                                        'name'  => 'hours_of_operation',
                                                        'label' => 'Hours of Operation',
                                                        'rules' => 'required|numeric'
                                                    ),
                                                    array(
                                                        'name'  => 'membership_charges',
                                                        'label' => 'Membership Charges',
                                                        'rules' => 'required|numeric'
                                                    ))
                );
    
                $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
    
                $this->form_validation->set_rules($config);
    
                if ($usertype == 'User') {
                    if ($this->form_validation->run('User') == FALSE) {
                        $this->load->view('create-profile-step-2', $data);
                    }
                    else {
                        $selected_options = $this->input->post('activities');
                        $this->activity->add_user_activities($userid, $selected_options);
                        $sex = $this->input->post('sex');
                        $this->profile->add_user_details($userid, $sex);
                        echo 'Profile Creation Completed!';
                    }
                }
                else {
                    if ($this->form_validation->run('Gym/Health Club Owner') == FALSE) {
                        $this->load->view('create-profile-step-2', $data);
                    }
                    else {
                        $selected_options = $this->input->post('facilities');
                        $this->facility->add_gym_facility($userid, $selected_options);
                        $website = $this->input->post('website');
                        $hours_of_operation = $this->input->post('hours_of_operation');
                        $membership_charges = $this->input->post('membership_charges');
                        $this->facility->add_gym_details($userid, $website, $hours_of_operation, $membership_charges);
                        echo 'Profile Creation Completed!';
                    }
                }
    
        } 
    

    这是我的观点:

        <?php include 'user/inc/header.php'; ?>
    
    <div id="content" class="row twelvecol">
        <h1>Create Profile (Step 2 of 2)</h1>
        <h2>For <?php echo $usertype; ?></h2>
        <?php
            echo form_open('register/CreateProfile_Step2');
            if ($usertype == 'User') {
                    echo form_label('Sex', 'sex');
                    $options_sex = array(
                        'Male' => 'Male',
                        'Female' => 'Female'
                    );
                    echo form_dropdown('sex', $options_sex, 'male');
                    $ctr = 1;
                    echo form_label('Activities Interested In', 'activities');
                    foreach($options->result() as $option)
                    {
                        echo form_label($option->activity, 'activity-'.$ctr);
                        $arr_option = array(
                            'name'  => 'activities[]',
                            'id'    => 'activity-'.$ctr++,
                            'value' => $option->activity
                        );
                        echo form_checkbox($arr_option);
                    }
            }
            elseif ($usertype == 'Gym/Health Club Owner')
            {
                    echo form_label('Website', 'website');
                    $arr_website = array(
                        'name' => 'website',
                        'id' => 'website',
                        'value' => set_value('website')
                    );
                    echo form_input($arr_website);
                    echo form_label('Hours of Operation', 'hours_of_operation');
                    $arr_hours = array(
                        'name' => 'hours_of_operation',
                        'id' => 'hours_of_operation',
                        'value' => set_value('hours_of_operation')
                    );
                    echo form_input($arr_hours);
                    echo form_label('Membership Charges', 'membership_charges');
                    $arr_charges = array(
                        'name' => 'membership_charges',
                        'id' => 'membership_charges',
                        'value' => set_value('membership_charges')
                    );
                    echo form_input($arr_charges);
                    $ctr = 1;
                    echo form_label('Facilities Available', 'facilities');
                    foreach($options->result() as $option)
                    {
                        echo form_label($option->facility, 'facility-'.$ctr);
                        $arr_option = array(
                            'name'  => 'facilities[]',
                            'id'    => 'facility-'.$ctr++,
                            'value' => $option->facility
                        );
                        echo form_checkbox($arr_option);
                    }
            }
            echo "<br/><br/>";
            echo form_submit('submit', 'Create Profile');
            echo form_close();
    
            echo validation_errors();
        ?>
    
        <a href="<?php echo site_url(); ?>/register/CreateProfile_Step1">Return to previous step</a>
    
    </div>
    
    <?php include 'user/inc/footer.php'; ?>
    

    $config更有可能出现问题,因为我尝试更改我的代码并为2个案例使用2个独立的控制器和视图。

1 个答案:

答案 0 :(得分:6)

好吧,因为没有人回答我的问题。我正在浏览代码并自己发现错误。我在配置中使用了键'name'而不是'field'。

不正确的代码

$config = array(
                'User'  =>  array(
                                array(
                                    'name'  => 'sex',
                                    'label' => 'Sex',
                                    'rules' => 'required'
                                )),
                'Gym/Health Club Owner' =>  array(
                                                array(
                                                    'name'  => 'website',
                                                    'label' => 'Website',
                                                    'rules' => 'prep_url'
                                                ),
                                                array(
                                                    'name'  => 'hours_of_operation',
                                                    'label' => 'Hours of Operation',
                                                    'rules' => 'required|numeric'
                                                ),
                                                array(
                                                    'name'  => 'membership_charges',
                                                    'label' => 'Membership Charges',
                                                    'rules' => 'required|numeric'
                                                ))
            );

正确代码

$config = array(
                'User'  =>  array(
                                array(
                                    'field'  => 'sex',
                                    'label' => 'Sex',
                                    'rules' => 'required'
                                )),
                'Gym/Health Club Owner' =>  array(
                                                array(
                                                    'field'  => 'website',
                                                    'label' => 'Website',
                                                    'rules' => 'prep_url'
                                                ),
                                                array(
                                                    'field'  => 'hours_of_operation',
                                                    'label' => 'Hours of Operation',
                                                    'rules' => 'required|numeric'
                                                ),
                                                array(
                                                    'field'  => 'membership_charges',
                                                    'label' => 'Membership Charges',
                                                    'rules' => 'required|numeric'
                                                ))
            );