對我的控制器操作之一的AJAX請求當前返回整頁HTML。Zend Framework 2:爲Ajax調用自動禁用佈局
我只希望它返回特定操作的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);
}
}
想法?
謝謝,山姆 - 我也更新了我的帖子,包括我嘗試使用該應用程序的Module.php的方法。有關爲什麼setTerminal()對ViewModel沒有影響的想法? –
我的猜測是onBootstrap中沒有ViewModel()存在,一個想法是注入一個viewModel終端(true)到控制器中,並將其用於輸出(我是否有任何意義?) – Sam