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?

questionAnswers(8)

yourAnswerToTheQuestion