2014-12-15 2 views
2

로그인 한 사용자를 식별하기 위해 내 AppController에서 변수 $ loggedIn을 전역으로 설정하려고하지만, 내 URL이 사용자 컨트롤러를 호출하는 경우에만 true가됩니다. 예를 들어 URL로 사용자/색인을 방문하면 로그인 한 것으로 나타납니다. 페이지/집을 방문하면 로그인하지 않습니다. appcontroller와 내보기 (default.ctp)의 코드가 아래에 표시됩니다.CakePHP 2.5 : 전역 변수 설정

컨트롤러/

public function beforeFilter() { 
$this->Auth->allow('index', 'view'); 
$this->set('loggedIn', $this->Session->read('Auth.User'));//fix here 
} 

AppController.php

보기/레이아웃/default.ctp

<div id="header"> 
    <div class="top-links"> 
    <?php if($loggedIn) { //fix here 
     echo $this->Html->link('Register', array('controller'=>'users','action'=>'register')); 
     echo '&nbsp;|&nbsp;'; 
     echo $this->Html->link('Login', array('controller'=>'users','action'=>'login')); 

     } else { 
      echo $this->Html->link('My Profile', array('controller'=>'users', 'action' => 'edit', $loggedIn['User']['id']));//fix here 
      echo $this->Html->link('Logout', array('controller'=>'users','action'=>'logout')); 
     } 
    ?> 
    </div> 
    <a href="/cake"><img src="/img/logo.png" class="top-logo" /></a> 
    <?php 
     echo $this->element('top_menu'); 

    ?> 

</div> 

답변

2

당신은 아마 PagesController 내의으로, beforeFilter를 덮어 쓰기한다. PagesController가 AppController-> beforeFilter 코드를 계속 사용하려면 PagesController에서 다음을 필요로합니다.

function beforeFilter() { 
     parent::beforeFilter(); 
     //rest of the code for this function 
}