2014-01-04 2 views
0

Я пытаюсь ограничить результаты разбивки на страницы $ this-> Session-> read ('Player.team_id') ... так что зарегистрированный пользователь может видеть только своих родственников.

PlayersController.php

public $paginate = array(
    'conditions' => array(
       'Player.team_id' => $this->Session->read('Player.0.Team.id') 
      ), 
    'limit' => 20, 
    'order' => array('Player.fullname' => 'asc') 
); 

public function index() { 
     $this->Paginator->settings = $this->paginate; 
     $this->Player->recursive = 0; 
     $this->set('players', $this->Paginator->paginate()); 
    } 

Это приводит к ошибке при просмотре проигрыватель/индексировать

Ошибка: ошибка синтаксиса, неожиданный T_VARIABLE
Файл:/Главная/WWW/public_html/DEV/приложение/контроллер /PlayersController.php
Линия: 21

Если я жестко задаю «условия», как показано ниже, он работает нормально и только извлекает записи, которые я хочу

'conditions' => array('Player.team_id' => 1) 

В действии входа в систему Player.php он записывает Session Variable Team.id и Team.name.

Я использовал $ this-> Session-> read else, где в моем приложении (просмотры и другие модели), и он отлично работает. Кажется, что это не работает в компоненте разбивки на страницы?

+0

Вы используете компонент сеанса? Также какой код находится в строке 21? –

+0

Да, компонент сеанса загружается в файл AppController.php. –

+0

Строка 21: 'Player.team_id' => $ this-> Session-> read ('Player.0.Team.id') У этой проблемы есть $ this-> Session-> read ('Player.0 .Team.id '), потому что если я заменил его «1», тогда код будет работать. –

ответ

0

Это просто недопустимый синтаксис PHP, члены класса могут быть инициализированы только с постоянными значениями, то есть значения, которые могут быть оценены во время компиляции (строки, числа, булевы значения, массивы и т.д. ...)

Присвоить значение сеанса во время выполнения в Controller::beforeFilter() обратного вызова (или даже непосредственно в index() действия в случае необходимости) вместо:

public $paginate = array(
    'limit' => 20, 
    'order' => array('Player.fullname' => 'asc') 
); 

public function beforeFilter() { 
    parent::beforeFilter(); 

    $this->paginate['conditions'] = array(
     'Player.team_id' => $this->Session->read('Player.0.Team.id') 
    ); 
} 

Кроме того, как указано в комментариях, убедитесь, что ключ сеанса вы получаете доступ на самом деле существует и имеет ожидаемое значение!

Смотрите также http://www.php.net/manual/en/language.oop5.properties.php

 Смежные вопросы

  • Нет связанных вопросов^_^