我有一个像这样的简单json视图
{
"articles": [
{
"id": 1,
"title": "Article one",
},
{
"id": 2,
"title": "Article two",
}
]
}
这个结果是分页的,我想将pageCount附加到结果中,就像这样。
{
"articles": [
{
"id": 1,
"title": "Article one",
},
{
"id": 2,
"title": "Article two",
}
],
"pageCount": 5
}
我怎样才能做到这一点?我不能直接附加它,因为它是一个结果集对象。 我应该在视图/控制器/模型中执行此操作吗? 非常感谢!
答案 0 :(得分:1)
鉴于您使用的是JsonView
和自动序列化
<强> this SO question 强>
您可以简单地为视图添加另一个变量,并将其标记为序列化,例如
$this->set('articles', $this->paginate());
$this->set('pageCount', $this->request->params['paging'][$this->Articles->alias()]['pageCount']);
$this->set('_serialize', ['articles', 'pageCount']);
如果您没有使用自动序列化,而是使用自定义视图模板
<强> Cookbook > Views > JSON and XML Views > Using Data Views with the Serialize Key 强>
您可以在模板中使用PaginatorHelper
并在转换为JSON时添加数据,例如
$pageCount = $this->Paginator->param('pageCount');
echo json_encode(compact('articles', 'pageCount'));