簡體   English   中英

CodeIgniter-根據會話數據更改導航鏈接

[英]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()檢查會話,而不是在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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM