如何为子资源启用分页?

How to enable pagination for Sub Resource?

在我的 API 配置文件中,我禁用了分页 :

api_platform.yaml :

api_platform:
    collection:
        pagination:
            enabled: false

但我想为特定的子资源启用分页:

Parent class :

/**
 * @ORM\Entity(repositoryClass="App\Repository\ForumRepository")
 * @ApiResource(
 *     collectionOperations={
 *         "get",
 *     },
 *     itemOperations={"get"},
 * )
 */
class Forum
{
    ...
    /**
     * @var ForumSubject[]|ArrayCollection
     *
     * @ORM\OneToMany(
     *     targetEntity="App\Entity\ForumSubject",
     *     mappedBy="forum",
     * )
     * @ApiSubresource(maxDepth=1)
     */
    private $subjects;
    ...

Children class :

/**
 * @ORM\Entity(repositoryClass="App\Repository\ForumSubjectRepository")
 * @ApiResource(
 *     collectionOperations={
 *         "post",
 *     },
 *     itemOperations={
 *         "get",
 *         "put",
 *         "delete"
 *     },
 * )
 */
class ForumSubject
{
    ...

一切正常 我可以访问我的 sub-resources : /api/forums/a21cb5db-aed7-45a6-884f-3d3e6d7abd8c/subjects (Return 论坛所有主题, 路由名称: api_forums_subjects_get_subresource ).

但是我无法在此路由上启用分页,文档中没有提及任何内容。

经过研究我尝试了这个,但没有任何效果 :

在 parent 或 children 中不起作用 class :

 * @ApiResource(
 *     ...
 *     subresourceOperations={
 *         "api_forums_subjects_get_subresource"={"pagination_enabled"=true}
 *     }

在 parent class 中不起作用 ; error un children class(在Swagger规范中找不到操作“api_forums_subjects_get_subresource”)。

 * @ApiResource(
 *     ...
 *     collectionOperations={
 *         "get",
 *         "api_forums_subjects_get_subresource"={"pagination_enabled"=true}
 *     },

查看 API 平台源代码后,这里是解决方案:

childrenclass:

 * @ApiResource(
 *     ...
 *     collectionOperations={
 *         ...
 *         "api_forums_subjects_get_subresource"={
 *             "method"="get", // don't forget : otherwise trigger a strange swagger error
 *             "pagination_enabled"=true
 *         }