我想使用一些 ajax,但我不知道如何使用与 zend 框架 2 中的 setNoRender() 相同的函数来禁用渲染视图。
如何在 zend 框架 2 中禁用渲染视图?
我想使用一些 ajax,但我不知道如何使用与 zend 框架 2 中的 setNoRender() 相同的函数来禁用渲染视图。
如何在 zend 框架 2 中禁用渲染视图?
要禁用您的视图:
public function myactionAction()
{
// your code here ...
return false;
}
“return false”禁用视图而不是布局!为什么?因为接受的类型是:
所以“假”禁用视图。
要禁用布局和视图,请返回一个响应对象:
public function myactionAction()
{
// your code here ...
return $this->response;
}
要禁用布局:
public function myactionAction()
{
// your code here ...
$view = new ViewModel();
$view->setTerminal(true);
return $view;
}
如果您使用的是 JSON,请查看视图并从您的控制器JsonStrategy
返回一个。JsonModel
见这篇文章。
或者,您可以Response
从控制器返回一个并跳过整个视图层:
public function testAction()
{
$response = $this->getResponse();
$response->setStatusCode(200);
$response->setContent('foo');
return $response;
}
正确和简单的解决方案来做到这一点
public function testAction()
{
$data = array(
'result' => true,
'data' => array()
);
return $this->getResponse()->setContent(Json::encode($data));
}
详情:http ://cmyker.blogspot.com/2012/11/zend-framework-2-ajax-return-json.html
我找到了一些答案。
虽然$this->layout()->getLayout()
返回新选择的布局的名称/路径...布局不会因以下任何命令而改变...
在控制器内
$this->getLocator()->get('view')->layout()->setLayout('layouts/ajax.phtml');
$this->getLocator()->get('view')->layout()->setLayout('ajax');
$this->getLocator()->get('view')->layout()->disableLayout();
在视图 PHTML 文件中
$this->layout()->setLayout('layouts/ajax.phtml');
$this->layout()->setLayout('ajax');
$this->layout()->disableLayout();
$view = 新的 ViewModel(); $view->setTerminate(true);
...
use Zend\View\Model\JsonModel;
public function myAction() {
...
$view = new JsonModel($myArray);
$view->setTerminal(true);
return $view;
}