Изменение шаблона для модуля в Zend Framework 2

zf-elephpant Для того, чтобы познакомится с работой шаблонизатора ZF2, нужно: обратиться к разделу документации о Zend\View и познакомится со структурой типичного модуля (можно взять Album из руководства для начинающих).

Конфигурация представления ZF2-приложения подробно описывается в config/autoload/ вашего приложения. При работе с модулем, изменить шаблон можно либо в методе самого модуля:

  1. namespace Content;
  2.  
  3. class Module
  4. {
  5. public function onBootstrap($e)
  6. {
  7. // Register a dispatch event
  8. $app = $e->getParam('application');
  9. $app->getEventManager()->attach('dispatch', array($this, 'setLayout'));
  10. }
  11.  
  12. public function setLayout($e)
  13. {
  14. $matches = $e->getRouteMatch();
  15. $controller = $matches->getParam('controller');
  16. if (false !== strpos($controller, __NAMESPACE__)) {
  17. // not a controller from this module
  18. return;
  19. }
  20.  
  21. // Set the layout template
  22. $viewModel = $e->getViewModel();
  23. $viewModel->setTemplate('content/layout');
  24. }
  25. }

Либо, в зависимости от задачи, в конкретном действии контроллера (например, меняем дизайн, в зависимости от конкретного дейстия (action)):

  1. namespace Foo\Controller;
  2.  
  3. use Zend\Mvc\Controller\AbstractActionController;
  4. use Zend\View\Model\ViewModel;
  5.  
  6. class BazBatController extends AbstractActionController
  7. {
  8. public function doSomethingCrazyAction()
  9. {
  10. $view = new ViewModel(array(
  11. 'message' => 'Hello world',
  12. ));
  13. $view->setTemplate('foo/baz-bat/do-something-crazy');
  14. return $view;
  15. }
  16. }

В случае необходимости, можно настроить более сложную логику для работы шаблонов, см

Внимание, изображение для заметки взято вот тут. Судя по ссылкам, таких слонов можно раньше было заказать:)