关于php:未定义的变量Codeigniter

Undefined variable Codeigniter

我的视图上出现此错误,我找不到问题出在哪里

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: errors

Filename: views/register_user.php

Line Number: 5

视图:

1
2
3
4
5
<?php if($errors){ ?>

<?=$errors?>

<? } ?>

这里是控制器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function register(){
    if($_POST){
        $config=array(
            array(
                'field'=>'username',
                'label'=>'Username',
                'rules'=>'trim|required|min_length[3]|is_unique[users.username]'
                ),
            array(
                'field'=>'password',
                'label'=>'Password',
                'rules'=>'trim|required|min_length[5]|max_length[15]'
                ),
            array(
                'field'=>'password2',
                'label'=>'Password Confirmed',
                'rules'=>'trim|required|min_length[5]|matches[password]'
                ),
            array(
                'field'=>'user_type',
                'label'=>'User Type',
                'rules'=>'required'
                ),
            array(
                'field'=>'email',
                'label'=>'Email',
                'rules'=>'trim|required|is_unique[users.email]|valid_email'
                )
            );
        $this->load->library('form_validation');
        $this->form_validation->set_rules($config);
        if($this->form_validation->run() == FALSE){
            $data['errors']=validation_errors();
        } else {
        $data=array(
            'username'=>$_POST['username'],
            'password'=>$_POST['password'],
            'user_type'=>$_POST['user_type']
            );
        $this->load->model('user');
        $userid=$this->user->create_user($data);
        $this->session->set_userdata('userID',$userid);
        $this->session->set_userdata('user_type',$_POST['user_type']);
        redirect(base_url().'posts');
    }
}
    $this->load->helper('form');
    $this->load->view('header');
    $this->load->view('register_user');
    $this->load->view('footer');
}

我开始使用Codeigniter,但我找不到问题...


您没有发布$data进行查看。您应该这样使用:

1
$this->load->view('register_user', $data);

问题是在某些情况下未创建$errors变量。使用if(isset($errors) && $errors))

实际上,在视图中您只需要<?php echo validation_errors(); ?>,无需将其分配给变量

有关如何显示错误的更多信息,请参见http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html。


更改此内容:

1
2
3
4
5
<?php if(isset($errors)){ ?>

<?php echo $errors; ?>

<? } ?>

更新:
但是您的代码中还有很多其他问题。您需要清除它。例如:您没有加载错误。然后,您无需验证即可创建用户。


或者您可以尝试以下操作:

1
2
3
4
5
<?php if(isset($errors) && ('' != $errors) && (null != $errors)): ?>

<?php echo $errors; ?>

<?php endif; ?>

请尝试这个

1
2
3
4
5
<?php if(isset($errors) && $errors!=''){ ?>

<?=$errors?>

<? } ?>