Codeigniter 传递变量错误

Posted

技术标签:

【中文标题】Codeigniter 传递变量错误【英文标题】:Codeigniter passing variable error 【发布时间】:2012-03-02 19:28:12 【问题描述】:

我正在使用 CodeIgniter,但在使用 $this->load->view('signup',$data)

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

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

【问题讨论】:

【参考方案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,要么在视图中检查它是否存在。

【讨论】:

谢谢,你是对的,我必须在开头初始化 $data['msg'] 为 null :)【参考方案2】:
if($this->form_validation->run() == FALSE)

    $this->load->view('signup');

您正在加载视图而不传递任何变量,因此不会设置 $msg

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

【讨论】:

以上是关于Codeigniter 传递变量错误的主要内容,如果未能解决你的问题,请参考以下文章

如何根据codeigniter中的时间戳获取数据?

无法将变量从控制器传递到模型以处理codeigniter中的多个上载字段

Codeigniter:将数据从控制器传递到视图

将变量从视图传递到视图 codeigniter

CodeIgniter 将变量传递给视图

CodeIgniter,消息:未定义的变量,传递数据