2016-03-21 77 views
0

我有一个家居控制器谁控制了主页更改导航链接(即没有用户交互或动态数据的简单着陆页):笨 - 基于会话数据

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class Home extends CI_Controller { 

    private $data; 
    protected $pagedata; 

    function __construct() 
    { 
    parent::__construct(); 
    if ($this->session->userdata('is_logged_in') == true) { 
     $this->data['nav'] = 'auth/template/homelogin_nav'; 
    } 
    $this->pagedata['title'] = 'La Giumenta Bardata Cosplay & Props'; 
    } 

    /** 
    * Index Page. 
    * 
    **/ 
    public function index() 
    { 
    $this->load->view('template/header', $this->pagedata); 

    $this->load->view("template/nav", $this->data); 

    $this->load->view('section_header'); 
    $this->load->view('section_about'); 
    $this->load->view('section_services'); 
    $this->load->view('section_portfolio'); 
    $this->load->view('section_social'); 
    $this->load->view('template/footer'); 
    } 
} 

所以基本上,如果用户是登录我加载了一个对应于导航的特定视图,如果没有,则加载正常菜单。 现在,这两个导航不同仅仅只有一个链接(一个导航视图具有指向登录页面的链接,另一个具有指向用户仪表板的链接)。

我也试试这个:

$this->load->view($this->data); 

,但当然是非法的,这是行不通的。 该问题开始是因为我必须检查结构中的会话,而不是在function index()内,否则我无法检查它。

回答

1

为什么不检查视图内部的会话?
创建一个导航,并且如果用户登录了show dashboard,则不显示导航中的登录按钮。

导航视图:

<ul> 
    <li> <?php echo anchor('home','Home'); ?> <li> 

<?php if($this->session->userdata('is_logged_in')== true){ 

     echo "<li>".anchor('dashboard','dashboard')."</li>"; 
     echo "<li>".anchor('logout','logout')."</li>"; 
}else 
     echo "<li>".anchor('login','login')."</li>"; ?> 
</ul> 
+0

谢谢你这么多,我没想到我能在视图中选中会议... – Psygno