現在、コントローラー アクションの 1 つに対する AJAX 要求は、フル ページの HTML を返します。
その特定のアクションの HTML (.phtml コンテンツ) を返すだけにしたいのです。
次のコードは、特定のアクションのレイアウトを手動で無効にすることで、問題をうまく解決していません。
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
return $viewModel;
AJAX リクエストが検出されたときに、アプリケーションでレイアウトを自動的に無効にするにはどうすればよいですか? このためのカスタム戦略を作成する必要がありますか? これを行う方法についてのアドバイスは大歓迎です。
さらに、アプリ Module.php で次のコードを試しました。AJAX は正しく検出されていますが、setTerminal() はレイアウトを無効にしていません。
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);
}
}
考え?