Zend Framework 2: Auto desabilitar layout para chamadas ajax
Um pedido de AJAX para uma das minhas ações de controlador atualmente retorna o HTML de página inteira.
Eu só quero que ele retorne o conteúdo HTML (.phtml) para essa ação específica.
O código a seguir soluciona mal o problema desabilitando manualmente o layout da ação específica:
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
return $viewModel;
Como posso fazer meu aplicativo desabilitar automaticamente o layout quando uma solicitação AJAX é detectada? Preciso escrever uma estratégia personalizada para isso? Qualquer conselho sobre como fazer isso é muito apreciado.
Além disso, eu tentei o seguinte código no meu aplicativo Module.php - ele está detectando AJAX corretamente, mas o setTerminal () não está desabilitando o layout.
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);
}
}
Pensamentos?