У меня есть файл макета следующим образом:Использование плагина контроллера расширить существующий макет в рамках ZEND
<?php echo $this->doctype(); ?>
<html>
<head>
<?php echo $this->headTitle(); ?>
<?php echo $this->headLink(); ?>
</head>
<body>
<?php echo $this->layout()->content; ?>
</body>
</html>
У меня есть система меню, которая записывается в другом шаблоне
<p>
<div>
menu code goes here
</div>
<p>
<?php echo $this->actionContent; ?>
</p>
</p>
Я хотел выход метода действия должен быть помещен в $ this-> actionContent, и все это должно идти в макет.
Тогда я написал плагин контроллера следующим образом:
class ZFExt_Controller_Plugin_Addmenu extends Zend_Controller_Plugin_Abstract
{
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
$view = Zend_Controller_Front::getInstance()
->getParam('bootstrap')
->getResource('view');
if (false !== $request->getParam('menu'))
{
$response = $this->getResponse();
$content = $response->getBody(true);
$view->menuContent = $content['default'];
$updatedContent = $view->render('menu.phtml');
$response->setBody($updatedContent);
}
}
}
В классе контроллера
class IndexController extends Zend_Controller_Action {
public function indexAction() {
}
public function viewAction()
{
$this->getRequest()->setParam('menu', false);
}
}
Так в зависимости от того действия не хочет, чтобы в меню есть мы можем передать «меню» параметр со значением 'ложный'.
Мой вопрос: это правильный способ?
Вы можете использовать навигацию zend, чтобы сделать это – Shaolin