Zend Framework 2-从控制器返回JSON
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zend Framework 2-从控制器返回JSON相关的知识,希望对你有一定的参考价值。
我有以下Json字符串:
var jsonString = '{"Users":[{"Name":"abc","Value":"test"},{"Name":"def","Value":"test"}]}';
我正在尝试在控制器中使用ZF2的JsonModel类(Zend View Model JsonModel)来使用上述JSON字符串呈现我的视图。但是,它似乎只需要一个数组而不是JSON字符串。
如何使控制器返回JSON字符串?
谢谢
答案
/**
* @return endHttpResponse
*/
public function indexAction()
{
$json = '{"Users":[{"Name":"abc","Value":"test"},{"Name":"def","Value":"test"}]}';
$this->response->setContent($json);
return $this->response;
}
这将缩短调度事件,因此应用程序将立即返回您的响应,而无需调用视图层来呈现它。
请参见http://framework.zend.com/manual/2.2/en/modules/zend.mvc.examples.html#returning-early
另一答案
public function listAction()
{
$acceptCriteria = array(
'ZendViewModelViewModel' => array(
'text/html',
),
'ZendViewModelJsonModel' => array(
'application/json',
));
$viewModel = $this->acceptableViewModelSelector($acceptCriteria);
Json::$useBuiltinEncoderDecoder = true;
$itemsList = $this->getMyListOfItems();
return $viewModel->setVariables(array("items" => $itemsList));
}
另一答案
JsonStrategy security fix另一答案
'strategies' => [
'ViewJsonStrategy',
],
然后您可以在控制器json响应中返回:
return new JsonModel(['some'=>'data']);
以上是关于Zend Framework 2-从控制器返回JSON的主要内容,如果未能解决你的问题,请参考以下文章
在 Zend Framework 应用程序中从模型/视图/控制器中抛出异常
Zend Framework - 从视图脚本中清除自定义占位符