使用codeigniter和flexiauth显示flashdata

时间:2015-01-20 11:13:16

标签: php codeigniter

我试图在用户尝试访问他没有权限的页面时显示(flash)消息。

我创建了一个加载视图的控制器:

function index()
{                                                                                       

    // Check user is allowed to open this       

    if ($this->flexi_auth->is_privileged('Wizard'))     
        {       

        $this->load->view('portal/wizard/wizard_view');     

        }       
        else        

        {               
            // Set a custom error message.
            $this->flexi_auth->set_error_message('Sorry, you are not allowed to view this!', TRUE);
            $this->session->set_flashdata('message', $this->flexi_auth->get_messages());
            redirect('auth_lite/portal');


        }
}

如果用户没有向导权限,它将重定向到主页面(auth_lite / portal)并显示错误消息(您不被允许......)。

在我的auth_lite控制器中,我为门户网站功能设置了这个:

function portal()
{
        if ($this->flexi_auth->is_logged_in())
    {


    // Get any status message that may have been set.
    $this->data['message'] = $this->session->flashdata('message');

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


    }
    else
    {
        redirect('auth/login');
    }

}

在我的视图文件中,显示消息为:

            <?php if (! empty($message)) { ?>
            <div id="message">
                <?php echo $message; ?>
            </div>
        <?php } ?>

但是,flash消息没有按预期显示。我已阅读文档,但我不确定我做错了什么。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

从auth_lite控制器中删除以下行

$this->data['message'] = $this->session->flashdata('message');

并更改视图中的错误消息

 <?php if($this->session->flashdata('message')) { ?>
     <div id="message">
        <?php echo $this->session->flashdata('message'); ?>
     </div>
 <?php } ?>