无法访问codeigniter视图中的控制器数据

时间:2012-07-18 17:28:11

标签: php codeigniter

我在控制器中使用以下代码。但是数据['msg']没有传递给视图文件。

代码:

class Operator{


public function view ($page)
{
    if ( ! file_exists('application/views/pages/'.$page.'.php'))
    {
        // Whoops, we don't have a page for that!
        show_404();
    }

    $data['title'] = $this->getTitle($page); 
    $this->load->view('templates/header', $data);
    $this->load->view('pages/'.$page, $data);
    $this->load->view('templates/footer', $data);

}
public function create_company()
{
        // some code
    $data['msg1']='my mesg';
    redirect('operator/view/operator_success','refresh');
}
};

当加载operator_success(查看页面)时,它显示错误消息:未定义变量'$ msg1'。

3 个答案:

答案 0 :(得分:1)

这是因为设置了data['msg1'],然后页面被重定向(不带有data数组)。

如果您希望data继续存在,则需要使用sessionscookies

答案 1 :(得分:0)

您在设置变量后重定向,因此您必须在会话(“flash”消息)或operator / view / operator_success控制器

上设置此消息

答案 2 :(得分:0)

重定向后,您无法使用变量或数组。而是设置变量保持在会话或CodeIgniter Flash数据。

class Operator
{

    public function view($page)
    {
        if (!file_exists('application/views/pages/' . $page . '.php')) {
            // Whoops, we don't have a page for that!
            show_404();
        }

        $data['title'] = $this->getTitle($page);
        $this->load->view('templates/header', $data);
        $this->load->view('pages/' . $page, $data);
        $this->load->view('templates/footer', $data);
    }

    public function create_company()
    {
        // some code
        $data['msg1'] = 'my mesg';

        // DO THIS 
        $this->session->set_flashdata('msg1', 'my mesg');
        // OR 
        $this->session->set_userdata('msg1', 'my mesg');
        redirect('operator/view/operator_success', 'refresh');
    }

}

重定向后,您只需拨打flashdata即可。

echo $this->session->flashdata('msg1');
// OR
echo $this->session->userdata('msg1');

您必须在使用前初始化会话,自动加载会话库或手动加载。

[1]自动加载会话库(config / autoload.php)

$autoload['libraries'] = array('session');

[2]手动加载库

$this->load->library('session');

详细了解会话和Flash数据here。希望这对你有所帮助。谢谢!