2016-03-04 51 views
1

加载完整的导航之前,我有一个值得欢迎的控制器指数函数:检查活动会议笨3

public function index() 
    { 
     $this->load->view('templates\header');  
     $this->load->view('welcome_message'); 
     $this->load->view('templates\footer'); 
    } 

页眉视图代码是这样以下几点:

<header> 
    <div class="navbar navbar-default navbar-static-top" role="navigation"> 
     <div class="container"> 
      <div class="navbar-header"> 
       <a class="navbar-brand" href="<?php echo base_url() ?>"> 
        Test App 
       </a> 
      </div> 
     </div> 
    </div> 
</header> 

它完美罚款至今。 我还想在导航栏中添加以下代码(在标题标签中)作为菜单项,但仅当用户会话处于活动状态时才会如此。因此,如果用户登录,则只有他/她能够看到菜单项,否则用户应只能看到品牌名称为“Test App”的导航栏。

<div class="navbar-collapse collapse"> 
        <ul class="nav navbar-nav navbar-right"> 
         <li> 
          <a href="<?php echo base_url('welcome') ?>"><i class="fa fa-tachometer"></i> Dashboard</a> 
         </li> 
         <li> 
          <a href="<?php echo base_url('admin/logout') ?>"><i class="fa fa-sign-out"></i> Logout 
          </a> 
         </li> 
        </ul> 
       </div> 

我也有检查,如果用户登录或不和我使用它的控制器内返回true或false一个帮手。我不喜欢在视图内使用它,因为我不得不重复菜单项并调整大量的双/单引号以使其工作。有没有一个干净的方式来做到这一点?

代码登录助手:

function is_logged_in() { 

    $CI =& get_instance(); 

    $user = $CI->session->userdata('username'); 
    if (!isset($user)) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

回答

0

你可以选择要根据来自控制器用户会话显示。

例如:

if($this->session->userdata('username')<>NULL){ 
    $data['logged_in'] = 1; 
}else{ 
    $data['logged_in'] = 0; 
} 
$this->load->view('templates\header',$data); 

鉴于:

if($logged_in==1){ 
     //header with logged in options 
    }else{ 
     //header with normal options. 
     } 
+0

谢谢。为了做到这一点,我需要用部分通用代码保留两个不同的视图。我的意思是在两个不同的视图中重复部分代码。它看起来并不多,但它是正确的方式。 – Saurabh

+0

@Saurabh试试这个方法,改变了我的答案。 – Dray

0

你为什么不使用session_status()

在其评论中的普遍功能张贴如果会话开始检查用户的documentation之一:

<?php 
/** 
* @return bool 
*/ 
function is_session_started() 
{ 
    if (php_sapi_name() !== 'cli') { 
     if (version_compare(phpversion(), '5.4.0', '>=')) { 
      return session_status() === PHP_SESSION_ACTIVE ? TRUE : FALSE; 
     } else { 
      return session_id() === '' ? FALSE : TRUE; 
     } 
    } 
    return FALSE; 
} 

// Example 
if (is_session_started() === FALSE) session_start(); 
?>