Zend Framework 2: deshabilitar automáticamente el diseño para llamadas ajax
Una solicitud AJAX a una de mis acciones de controlador actualmente devuelve el HTML completo de la página.
Solo quiero que devuelva el HTML (contenido .phtml) para esa acción en particular.
El siguiente código resuelve mal el problema al deshabilitar manualmente el diseño para la acción en particular:
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
return $viewModel;
¿Cómo puedo hacer que mi aplicación deshabilite automáticamente el diseño cuando se detecta una solicitud AJAX? ¿Necesito escribir una estrategia personalizada para esto? Cualquier consejo sobre cómo hacer esto es muy apreciado.
Además, probé el siguiente código en mi aplicación Module.php: está detectando AJAX correctamente, pero setTerminal () no está deshabilitando el diseño.
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);
}
}
¿Pensamientos?