2014-12-15 5 views
2

Я устанавливаю переменную '$ loggedIn' в свой AppController для доступа во всем мире, чтобы идентифицировать зарегистрированных пользователей, но это только возвращает true, если мой url вызывает контроллер Users. например, если вы посещаете пользователя/индекс с URL-адресом, он показывает, что вы вошли в систему. Если я посещаю страницы/дома, он не показывает вход. Под нами код в appcontroller и моем представлении (default.ctp).CakePHP 2.5: установка глобальной переменной

Контроллеры/AppController.php

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

Посмотреть/Макеты/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

Вы, вероятно, перезапись beforeFilter внутри PagesController. Чтобы ContentController продолжал использовать код AppController-> beforeFilter, это необходимо в PagesController:

function beforeFilter() { 
     parent::beforeFilter(); 
     //rest of the code for this function 
} 
Смежные вопросы