Intereting Posts

Как передать переменные в макет в приложении Zend Framework с несколькими модулями / макетами?

Прежде чем преобразовать приложение Zend Framework в структуру, основанную на модуле, у него был один макет, и я мог передавать переменные с моего контроллера следующим образом:

// Controller action $this->view->foo = 'Something'; // Layout <?= $this->foo ?> 

Однако, переместив все в модуль по умолчанию и создав отдельный модуль «admin», я больше не могу заставить это работать, скорее всего, из-за того, что я переместил «Настройки просмотра» из моего загрузочного файла и в плагин контроллера, где я переключение макета на основе модуля. Мой плагин выглядит так:

 class KW_Controller_Plugin_LayoutSelector extends Zend_Controller_Plugin_Abstract { public function preDispatch(Zend_Controller_Request_Abstract $request) { $layout = Zend_Layout::getMvcInstance(); $layout->setLayout($request->getModuleName()); $view = $layout->getView(); $view->doctype('HTML5'); $view->setEncoding('UTF-8'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8'); $view->headScript()->appendFile('/js/jquery-1.7.1.min.js'); switch ($request->getModuleName()) { case 'admin': $view->headTitle('Admin Area')->setSeparator(' - '); $view->headLink()->appendStylesheet('/css/admin/global.css'); $view->headScript()->appendFile('/js/admin/common.js'); break; default: $view->headTitle('Main Site')->setSeparator(' - '); $view->headLink()->appendStylesheet('/css/global.css'); $view->headScript()->appendFile('/js/common.js'); break; } } } 

Если я переведу все вызовы методов в представление обратно в мой bootstrap, я могу снова передать переменные в макет; поэтому я предполагаю, что что-то происходит в неправильном порядке, возможно, мой макет переключается после того, как я передал переменные виду из моего контроллера, и они не попадают в мой макет? (Я попытался изменить точку, в которой выполняется выше, помещая код как в preDispatch (), так и в postDispatch () и т. Д.)

Стоит отметить, что я могу получить доступ к этим переменным в своих отдельных сценариях просмотра, а не в макете, в которой они содержатся.

Любые указатели будут очень благодарны.

Solutions Collecting From Web of "Как передать переменные в макет в приложении Zend Framework с несколькими модулями / макетами?"