代码点火器 - 根据会话数据更改导航链接


CodeIgniter - change nav link based on session data

我有一个控制主页的家庭控制器(这是一个没有用户交互或动态数据的简单登录页面):

    <?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()内检查会话,或者我无法检查它。

为什么不在视图中检查会话?
进行一次导航,如果用户已登录,则显示仪表板,如果没有,则在导航中显示登录按钮。

导航视图:

<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>