Zend Framework 2:自动禁用 ajax 调用的布局
2022-08-30 23:36:18
对我的控制器操作之一的 AJAX 请求当前返回整页 HTML。
我只希望它返回该特定操作的HTML(.phtml内容)。
以下代码通过手动禁用特定操作的布局来很好地解决了该问题:
$viewModel = new ViewModel();
$viewModel->setTerminal(true);
return $viewModel;
如何使我的应用程序在检测到 AJAX 请求时自动禁用布局?我需要为此编写自定义策略吗?任何关于如何做到这一点的建议都非常感谢。
此外,我已经在我的应用程序模块中尝试了以下代码.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);
}
}
思潮?