如何为子资源启用分页?
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
* }
在我的 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
* }