2015-09-15 106 views
0

我剛剛使用HMVC從標準CI切換到Codeigniter Skeleton。我正在嘗試檢查用戶是否已登錄並根據狀態顯示菜單項。檢查用戶是否已登錄 - 使用Codeigniter HMVC的Ion Auth

此代碼對標準CI與ion_auth:

<ul class="nav navbar-nav pull-right"> 
<!-- User Tab --> 
<?php if (!$this->ion_auth->logged_in()): ?> 
    <li><a href="<?php echo site_url('auth/login'); ?>">Log in</a></li> 
<?php else: ?> 
    <li class="dropdown"> 
     <a class="dropdown-toggle" data-toggle="dropdown" href="#"> 
     My Account <b class="caret"></b> 
     </a> 
     <ul class="dropdown-menu"> 
      <li><a href="<?php echo site_url('auth/logout'); ?>">Logout</a></li> 
     </ul> 
    </li> 
<?php endif ?> 
</ul> 

如果我用這個與HMVC和ion_auth,我得到以下錯誤:

A PHP Error was encountered

Severity: Notice

Message: Undefined property: CI::$ion_auth

Filename: MX/Loader.php

Line Number: 279

Fatal error: Call to a member function logged_in() on a non-object in C:\wamp\www\myapp\application\views\header.php on line 59

我試着加入ion_auth庫到autoload.php,但是當點擊鏈接或使用任何ion_auth路由時,我得到一個「Can not redeclare class Ion_auth」錯誤。

+1

如果您已經聲明瞭具有相同名稱的類,則會出現此類錯誤。確保你沒有加載庫兩次? –

+0

我只在autoload.php中加載一次,如果我從那裏刪除它,我得到一個未定義的錯誤,如上所示。 –

回答

1

我通過從應用程序/模塊/ AUTH /控制器/ auth.php

$this->load->library('authentication', NULL, 'ion_auth'); 

除去下面的行和添加 'ion_auth' 到autoload.php

我現在可以使用解決了這個ion_auth在控制器和視圖中都起作用,並且像/ auth/login /這樣的缺省auth路由仍按預期工作。