CodeIgniter - 根据会话数据更改导航链接

时间:2016-03-21 14:35:58

标签: php codeigniter session

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

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

但当然是非法的,但不起作用。 问题开始是因为我必须在costruct中检查会话而不是function index()内部或我无法检查它。

1 个答案:

答案 0 :(得分: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>