我有一个控制主页的家庭控制器(这是一个没有用户交互或动态数据的简单登录页面):
<?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()
内部或我无法检查它。
答案 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>