Zend Framework 2: Layout für Ajax-Aufrufe automatisch deaktivieren

Eine AJAX-Anforderung an eine meiner Controller-Aktionen gibt derzeit den ganzseitigen HTML-Code zurück.

Ich möchte nur, dass es den HTML-Inhalt (.phtml-Inhalt) für diese bestimmte Aktion zurückgibt.

Der folgende Code löst das Problem nur unzureichend, indem das Layout für die jeweilige Aktion manuell deaktiviert wird:

    $viewModel = new ViewModel();
    $viewModel->setTerminal(true);
    return $viewModel;

Wie kann ich meine Anwendung veranlassen, das Layout automatisch zu deaktivieren, wenn eine AJAX-Anforderung erkannt wird? Muss ich eine benutzerdefinierte Strategie dafür schreiben? Jeder Rat, wie dies zu tun ist, wird sehr geschätzt.

Zusätzlich habe ich den folgenden Code in meiner app Module.php ausprobiert - es erkennt AJAX korrekt, aber das setTerminal () deaktiviert das Layout nicht.

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);
    }
}

Gedanken?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage