В cakephp 2.0 я пытаюсь установить переменную в AppController, чтобы она была доступна в любых подклассах и представлениях следующим образом:
function beforeFilter() {
$this->set('lang', self::getCurrentLanguage()); // set to access it also from Views
$this->set('conf', self::getConfig()); // set to access it also from Views
$this->lang = self::getCurrentLanguage(); // set to access it also from Controllers
$this->conf = self::getConfig(); // set to access it also from Controllers
$this->set('user', $this->Session->read('User'));
$this->user = $this->Session->read('User');
}
Все работает гладко, когда я использую echo $lang; в представлении и повторите $this->lang в любых контроллерах, кроме одного с соответствующим представлением:
echo $conf;
echo $lang;
---
Notice (8): Undefined variable: conf [APP\views\admin\products.ctp, line 7]
Notice (8): Undefined variable: lang [APP\views\admin\products.ctp, line 8]
Поскольку класс AdminController расширяет AppController, я ожидаю такого же поведения, как и любой другой подкласс AppController. Уже потратил полдня на то, чтобы найти, где может быть проблема. Где находится отправная точка расследования? Что я должен проверить в первую очередь?
Что не так с AdminController, поскольку он не «видит» эти переменные, но у других классов нет этой проблемы? Это единственный обходной путь, который работает для этого конкретного класса:
$this->set('conf', parent::getConfig());