2016-03-04 47 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(); 
?>