0

我在控制器中使用以下代码。但是 data['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(view page) 时显示错误消息:未定义变量“$msg1”。

4

3 回答 3

1

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

如果你想data坚持,那么你需要使用sessioncookies

于 2012-07-18T17:31:25.007 回答
0

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

于 2012-07-18T17:31:50.103 回答
0

重定向后,您不能使用变量或数组。而是设置变量 keep in session 或 CodeIgniter Flash Data。

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

在此处查看有关会话和闪存数据的更多信息。希望这对您有所帮助。谢谢!!

于 2012-07-18T18:04:29.800 回答