Zend Framework 3 - как отключить макет для всего контроллера - PullRequest
0 голосов
/ 13 сентября 2018

В Zend Framework 3 возможно ли отключить макет для всего контроллера, предпочтительно с помощью методов __construct() или onDispatch()?

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

public function indexAction()
{
    $view = new \Zend\View\Model\ViewModel();
    $view->setTerminal(true);
    return $view;
}

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

1 Ответ

0 голосов
/ 15 сентября 2018

В вашем модуле класс:

public function onBootstrap(MvcEvent $e)
{
    $sharedEvents = $e->getApplication()
        ->getEventManager()
        ->getSharedManager();
    $sharedEvents->attach(__NAMESPACE__, 'dispatch',
        function ($e) {
            if ($e->getRouteMatch()->getParam('controller') == '[your controller name in lowercase]') {
                $result = $e->getResult();
                if ($result instanceof \Zend\View\Model\ViewModel) {
                    $result->setTerminal(true);
                } else {
                    throw new \Exception(
                      __METHOD__ . ' expected \Zend\View\Model\ViewModel');
                }
            }
        });
}
...