在ZF2中如何默认返回JsonModel?
默认ViewModel不是必需的,我可以从控制器返回数据数组:在ZF2中如何默认返回JsonModel?,json,zend-framework2,zend-view,Json,Zend Framework2,Zend View,默认ViewModel不是必需的,我可以从控制器返回数据数组: public function someAction() { //... return array('result'=>$data); } 但我不能将这种方法用于Json。在dispatch事件中,我应该如何将结果包装到JsonModel中,以获得相应的accept标头?您必须在module.config.php下的视图管理器中添加ViewJsonStrategy策略: 'view_manager' => ar
public function someAction()
{
//...
return array('result'=>$data);
}
但我不能将这种方法用于Json。在dispatch事件中,我应该如何将结果包装到JsonModel中,以获得相应的accept标头?您必须在module.config.php下的视图管理器中添加ViewJsonStrategy策略:
'view_manager' => array(
'template_map' => array(
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
'strategies' => array(
'ViewJsonStrategy',
),
),
然后,您可以在操作中返回JsonModel:
public function myAction()
{
$data = [1, 2, 3, 4];
return new JsonModel([
'data' => $data
]);
}
您必须在module.config.php下的视图管理器中添加ViewJsonStrategy策略:
'view_manager' => array(
'template_map' => array(
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
'strategies' => array(
'ViewJsonStrategy',
),
),
然后,您可以在操作中返回JsonModel:
public function myAction()
{
$data = [1, 2, 3, 4];
return new JsonModel([
'data' => $data
]);
}
要从控制器获取json数据,您可以回显json编码的数据并退出。我将其用于jqueryajax。我希望这就是你要找的
public function testAction()
{
$active = "some data";
echo json_encode(array('result' => $active));
exit();
}
然后在jquery中,您可以得到这样的数据
$.ajax({
type: 'GET',
url: '/index/time',
dataType: 'json',
error: function() {
$('#info').html('<p>Error on time calculation</p>');
},
success: function(data) {
data.result
}
});
要从控制器获取json数据,您可以回显json编码的数据并退出。我将其用于jqueryajax。我希望这就是你要找的
public function testAction()
{
$active = "some data";
echo json_encode(array('result' => $active));
exit();
}
然后在jquery中,您可以得到这样的数据
$.ajax({
type: 'GET',
url: '/index/time',
dataType: 'json',
error: function() {
$('#info').html('<p>Error on time calculation</p>');
},
success: function(data) {
data.result
}
});
这真的很简单
增加如下:
IndexController.php
api.phtml
这真的很简单
增加如下:
IndexController.php
api.phtml
只需为所有API控制器创建基本控制器,并替换MvcEvent中的模型
class JsonRestController extends AbstractRestfulController
{
public function onDispatch(MvcEvent $e)
{
$e->setViewModel(new JsonModel());
return parent::onDispatch($e);
}
}
只需为所有API控制器创建基本控制器,并替换MvcEvent中的模型
class JsonRestController extends AbstractRestfulController
{
public function onDispatch(MvcEvent $e)
{
$e->setViewModel(new JsonModel());
return parent::onDispatch($e);
}
}
一般来说,如果答案中包含对代码意图的解释,以及在不介绍其他代码的情况下解决问题的原因,那么答案会更有帮助。谢谢,我是新来的。我以后会考虑你的建议。你为什么要退出?相反,您可以返回json_encode。。。;我想说,最好返回一个JsonModel,因为这也会在响应中设置正确的标题。一般来说,如果答案包括对代码意图的解释,以及在不介绍其他代码的情况下解决问题的原因,那么答案会更有帮助。谢谢,我是新来的。我以后会考虑你的建议。你为什么要退出?相反,您可以返回json_encode。。。;我想说,最好返回一个JsonModel,因为这也会在响应中设置正确的头。我的问题是-如何避免每次返回时手动使用JsonModel?我现在处理API模块,所以除了JSON或XMLL之外,我不需要任何其他视图类型。我的问题是——如何避免每次返回时都手动使用JsonModel?我现在处理API模块,所以除了JSON或XML之外,我不需要任何其他视图类型