Codeigniter传递变量错误

时间:2012-03-02 19:28:12

标签: php codeigniter codeigniter-2

我正在使用CodeIgniter并且在使用时发送变量存在问题     的 $这 - >负载>查看( '注册',$数据)即可。

这是我控制器中的一些代码。

function create_member()
{
    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[4]');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
    $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]');
    $this->form_validation->set_rules('password1', 'Confirm Password', 'trim|required|matches[password]');

    if($this->form_validation->run() == FALSE)
    {
        $this->load->view('signup');
    }else
    {
        $this->load->model('membership');

        if($query=$this->membership->check_username() == TRUE)
        {
            $data['msg']= "Username exist";
            $this->load->view('signup',$data); //problem encounter here.

        }else
        {
            if($query = $this->membership->create_member())
            {
                $data['main_content'] = 'signup_successful';
                $this->load->view('include/template', $data);
            }else
            {
                $this->load->view('signup_form');
            }
        }
    }
}

这里出现错误信息: 遇到了PHP错误 严重性:通知
消息:未定义的变量:msg
文件名:views / signup.php
行号:99

<?php echo $msg; ?> // code inside view/signup.php

2 个答案:

答案 0 :(得分:1)

这可能是因为你的代码进入了这个区域而你没有在这里设置$data['msg']所以在视图中它不存在。:

else
        {
            if($query = $this->membership->create_member())
            {
                $data['main_content'] = 'signup_successful';
                $this->load->view('include/template', $data);
            }else
            {
                $this->load->view('signup_form');
            }
        }

在方法的开头将$data['msg']初始化为null,或者在视图中检查它是否存在。

答案 1 :(得分:0)

if($this->form_validation->run() == FALSE)
{
    $this->load->view('signup');
}

您在不传递任何变量的情况下加载视图,因此不会设置$msg

您需要将isset($msg)添加到视图(或$data['msg'] = ''添加到控制器。