Zend Framework 2: Automatyczne wyłączanie układu połączeń ajaxowych

Żądanie AJAX do jednej z moich akcji kontrolera obecnie zwraca pełny kod HTML strony.

Chcę tylko, aby zwrócił HTML (zawartość .phtml) dla tej konkretnej akcji.

Poniższy kod źle rozwiązuje problem, ręcznie wyłączając układ dla określonej akcji:

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

Jak mogę sprawić, że moja aplikacja automatycznie wyłączy układ, gdy zostanie wykryte żądanie AJAX? Czy muszę w tym celu napisać niestandardową strategię? Wszelkie porady, jak to zrobić, są bardzo cenione.

Ponadto wypróbowałem następujący kod w mojej aplikacji Module.php - wykrywa on poprawnie AJAX, ale setTerminal () nie wyłącza układu.

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

Myśli?

questionAnswers(8)

yourAnswerToTheQuestion