параметры макета утеряны после добавления ресурса вида в ini приложения - PullRequest
1 голос
/ 16 марта 2012

Я хочу добавить вспомогательный путь просмотра в существующий проект. Для этого я добавил следующую строку в мой application.ini:

resources.view[] =

И в моем файле начальной загрузки:

$this->bootstrap("view");
$view = $this->getResource("view");
$view->addHelperPath(APPLICATION_PATH . "/../library/MyPath", MyNamespace");

Теперь я действительно могу добавить помощники вида на свой путь, поэтому никаких проблем нет.

Однако переменные, которые я добавил к представлению в моих помощниках действий, внезапно перестали быть доступными внутри моих представлений. Я могу восстановить их внутри своего макета, как обычно, чтобы знать, что они назначены правильно.

Я назначаю переменную в свой Action Helper в postDispatch:

$view = $this->getActionController()->view;
$view->myVar = $this->var;

Тогда в моем макете

Zend_Debug::dump( $this->myVar );

Результат: (строка) "myVar contents"

А на мой взгляд

Zend_Debug::dump( $this->myVar );

Результат: null

Так как это уже существующий проект, мне нужно общее решение, которое я могу использовать либо в моем загрузчике, либо в application.ini

Ответы [ 2 ]

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

После некоторых исследований это то, что я узнал.

Редактировать: Удален текст, касающийся различий между переменными представления и переменными макета - см. Комментарии @pieter и @david weinraub

Постдиспетчер Action Helper запускается ПОСЛЕ отображения рендеринга, но ДО отображения макета. Поэтому любые переменные, назначенные представлению в postDispatch помощника действий, были недоступны в моих представлениях, они еще не существовали.

Мне очень любопытно, почему это происходит ТОЛЬКО при активной начальной загрузке представления? Я оставлю вопрос без ответа, может быть, кто-то может прояснить это.

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

Вы можете добавить пути к своему виду из application.ini:

resources.view.helperPath.MyPrefix = "/path/to/helpers"

Надеюсь, это решит проблему. Я предполагаю, что, как вы делаете, существующий экземпляр вида каким-то образом перезаписывается, что разрушает предыдущие изменения. Вы можете попытаться получить представление от фронт-контроллера, установить путь помощника и передать его обратно на фронт-контроллер.

...