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)); }

官方文档:http://framework.zend.com/manual/2.2/en/modules/zend.mvc.plugins.html#zend-mvc-controller-plugins-acceptableviewmodelselector

另一答案
JsonStrategy security fix
另一答案
'strategies' => [ 'ViewJsonStrategy', ],

然后您可以在控制器json响应中返回:

return new JsonModel(['some'=>'data']);

以上是关于Zend Framework 2-从控制器返回JSON的主要内容,如果未能解决你的问题,请参考以下文章

在 Zend Framework 应用程序中从模型/视图/控制器中抛出异常

Zend Framework 中的动态菜单

Zend Framework 2 中的数据库访问

Zend Framework - 从视图脚本中清除自定义占位符

Zend Framework,FusionCharts,PHP,Javascript

如何使用Zend Framework 2路由选择控制器命名空间?