CakePHP Установить значение в перед фильтром - PullRequest
1 голос
/ 04 ноября 2011

Я использую Cakephp1.3, и я пытаюсь установить значение в app_controller.php в beforeFilter Function, вот мой код

function beforeFilter() {

  $sess =  $this->Session->read();

  if(isset($sess['Auth']['User'])) {
  $checkLogin = 1; 
  }
  else { $checkLogin=0; }

  $this->set('checkLogin',$checkLogin);

  //$this->Auth->authorize = 'actions';        
  $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');        
  $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index');
  $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');        
 }

Теперь я хочу получить доступ к значению Checklogin в user_controller.php

Я попробовал это

function beforeFilter() {
    parent::beforeFilter();
     echo $checkLogin; exit;
    $this->Auth->allow(array('users' => 'login'));
    $this->Auth->authorize = 'controller';

     } 

я получил эту ошибку

неопределенная переменная :: checklogin ()

Пожалуйста, скажите мне решение для этого

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 04 ноября 2011

Вы должны использовать переменную экземпляра, а не локальную.Вместо

$checkLogin

используйте

$this->checkLogin

в обоих контроллерах, и это будет работать.

Пример:

class AbstractUser{
    function __construct(){
        $this->instanceVar = true;
        $localVar = true;
    }
}


class User extends AbstractUser{
    function __construct(){
        parent::__construct();
    }

    function useVariables(){
        var_dump(isset($this->instanceVar));  # returns true
        var_dump(isset($localVar));           # returns false
    }
}

$user = new User;

$user->useVariables();

РЕДАКТИРОВАТЬ

Обновлен пример, чтобы он больше походил на ваш вариант использования.

1 голос
/ 04 ноября 2011

Вы не можете получить доступ к checkLogin, если не сделаете его глобальной переменной. Проверьте область действия переменной в PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...