Zend Framework 2: автоматическое отключение макета для вызовов ajax
AJAX-запрос к одному из моих действий контроллера в настоящее время возвращает HTML-код полной страницы.
Я только хочу, чтобы он возвращал HTML (содержимое .phtml) для этого конкретного действия.
Следующий код плохо решает проблему, вручную отключая макет для определенного действия:
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
return $viewModel;
Как я могу заставить мое приложение автоматически отключать макет при обнаружении AJAX-запроса? Мне нужно написать собственную стратегию для этого? Любые советы о том, как это сделать, очень ценятся.
Кроме того, я попробовал следующий код в своем приложении Module.php - он правильно определяет AJAX, но setTerminal () не отключает макет.
public function onBootstrap(EventInterface $e)
{
$application = $e->getApplication();
$application->getEventManager()->attach('route', array($this, 'setLayout'), 100);
$this->setApplication($application);
$this->initPhpSettings($e);
$this->initSession($e);
$this->initTranslator($e);
$this->initAppDi($e);
}
public function setLayout(EventInterface $e)
{
$request = $e->getRequest();
$server = $request->getServer();
if ($request->isXmlHttpRequest()) {
$view_model = $e->getViewModel();
$view_model->setTerminal(true);
}
}
Мысли?