Php (如何)可以操纵Zend Paginator对象的数据?

Php (如何)可以操纵Zend Paginator对象的数据?,php,pagination,zend-framework2,zend-paginator,laminas-api-tools,Php,Pagination,Zend Framework2,Zend Paginator,Laminas Api Tools,在Zend Framework和Apiglity驱动的应用程序中,我将Zend\Paginator\Paginator用于我的集合对象。Paginator对象包含一个ResultSet,因此平面数据结构如下: { "project": [ { "id": "1", "title": "...", ... }, ... ] } Hal REST控制器插件/视图辅

在Zend Framework和Apiglity驱动的应用程序中,我将Zend\Paginator\Paginator用于我的集合对象。Paginator对象包含一个ResultSet,因此平面数据结构如下:

{
    "project": [
        {
            "id": "1",
            "title": "...",
            ...
        },
        ...
    ]
}
Hal REST控制器插件/视图辅助程序处理后的结果输出如下所示:

{
    "_links": {...},
    "_embedded": {
        "project": [
            {
                "id": "1",
                "title": "...",
                ...
            },
            ...
        ]
    },
    "page_count": 3,
    "page_size": 25,
    "total_items": 72
}
现在,我想给它嵌套一个新的级别,例如,每个项目都应该包含一个图像列表。结果输出应如下所示:

{
    "_links": {...},
    "_embedded": {
        "project": [
            {
                "id": "1",
                "title": "...",
                "_embedded": {
                    "images": [
                        {
                            "id": "1",
                            "src": "...",
                            ...
                        },
                        ...
                    ]
                }
            },
            ...
        ]
    },
    "page_count": 3,
    "page_size": 25,
    "total_items": 72
}
我知道如何获取数据的数组副本并对其进行扩展。但是我必须返回Paginator对象本身


如何修改Zend\Paginator\Paginator的数据?

您可以获取数组并扩展它,然后使用修改后的数组创建新的Paginator对象。

谢谢您的回答!我不认为,这会有帮助,因为新的分页器将错过所有的元信息,如链接,页面数量,页面大小等,但无论如何,让我们试试。我无法使用从另一个分页器检索并修改的预定义数据创建新的分页器,因为需要AdapterInterface或AdapterAggregateInterface,而不是数组。我也没有看到任何合适的二传手。你能举个例子吗?创建一个包含丰富数据的新分页器的部分有效!我只需要创建一个适配器类,它扩展Zend\Paginator\Adapter\ArrayAdapter。我将数据传递给它,然后使用ProjectAdapter作为适配器创建一个新的分页器。所以,至少这一步是可行的。但正如我已经说过的,它会导致分页问题——只有一页,并没有下一页,并没有上一页。如何解决这个问题?我刚刚尝试修改ProjectAdaptercount。好吧,它工作了,我得到了我的HAL链接。但它只适用于第一页。其他页面是空的。你有没有一个想法,如何让它适用于所有页面?如果你能提供一个例子,那就太好了。automatix,你有这个问题的解决方案吗?我还需要将图像添加到apigility集合中。