[英]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.