CakePHP $ this-> viewVars теряется в плагине после завершения действия контроллера - PullRequest
0 голосов
/ 17 марта 2012

Я устанавливаю viewVar в контроллере плагинов. Перед рендерингом я отлаживаю ($ this-> viewVars), чтобы проверить, что соответствующая переменная находится в массиве (он есть).

Переменная, которую я устанавливаю, является переменной частного класса, но я также попытался создать ее локальную копию и использовать форму set (compact ()) для установки переменной.

Так что моя проблема не синтаксическая.

Когда я отлаживаю переменную в моем представлении, я обнаруживаю, что она не определена. Переменная, установленная в моем главном приложении AppController, правильно передается в представление.

Если я отлаживаю viewVars в различных точках приложения, я вижу, что

  • главный контроллер приложений устанавливает переменную, которая присутствует в моем плагине AppController
  • в конце моего плагина Controller (не AppController) viewVars показывает мою переменную
  • он исчез, на мой взгляд, оставив только переменную, установленную в моем приложении AppController

Если я установлю переменную в своем главном AppController (до фильтра), то она будет присутствовать в моем конечном выводе вида.

Если я добавлю метод beforeRender в свой плагин для отладки ($ this-> viewVars), он покажет только переменную, установленную в главном AppController, а не переменную в плагине my.

Как мне получить переменную из плагина Controller для установки в качестве переменной представления?

1 Ответ

0 голосов
/ 17 марта 2012

Проблема заключалась в последовательности событий в обратных вызовах контроллера .

Я тупо вызывал команду рендеринга в плагине метода beforeFilter ()Это должно было быть сделано в методе afterFilter ().Перемещение его туда устранило проблему.

...