【问题标题】:Form validation not working in CodeIgniter, controller issue表单验证在 CodeIgniter 中不起作用,控制器问题
【发布时间】:2011-08-10 06:07:20
【问题描述】:

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

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

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

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

【问题讨论】:

  • 关于错误更具体。
  • 没有错误出现,看看当我将表单留空时,它不会为必填字段提供任何错误。而且即使我在输入框中输入了一些东西,提交后值也不会保留,输入框中的所有内容都会重置,并且不会出现验证错误。
  • 我在手机上看不到所有代码,但你有 echo validation_error()
  • 是的...我认为...您能检查我的验证配置吗?这更有可能是一个错误......

标签: php codeigniter validation


【解决方案1】:

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

不正确的代码

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

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多