繁体   English   中英

表单验证在 CodeIgniter、controller 问题中不起作用

[英]Form validation not working in CodeIgniter, controller issue

我有一个 controller 和一个视图。 我正在尝试通过表单提交一些详细信息,但是当我提交时,没有显示错误。

我只为 2 种不同类型的用户使用了一个 controller。 这两个用户是 -

  1. 用户
  2. 健身房/健身俱乐部老板

根据$suertype ,我调用了相同的视图,但加载了不同的内容。

这是我的 controller:

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 个单独的控制器和视图。

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

不正确的代码

$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'
                                                ))
            );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM