У меня есть ApiResource , который предоставляет некоторые поля ( id, имя ) => GET / users
И я хочу показатьнекоторые другие поля ( access, accessLevel ) ТОЛЬКО когда я применяю фильтр ( ExistsFilter ), который проверяет, является ли поле " access " не null => GET / users? access [Существует] = 1
До сих пор я пытался применить контекстную группу нормализации "пользователь: доступ", когда я использую фильтрзапрос, но я не знаю, как этого добиться!
Вот мой текущий код:
<?php
namespace App\Entity;
/**
* @ORM\Entity
* @ORM\Table(name="User")
*
* @ApiResource(
* normalizationContext={"groups"={"user:read"}},
*
* collectionOperations = {
* "get",
* },
*
* itemOperations={
* "get",
* },
* )
*
* @ApiFilter(ExistsFilter::class, properties={"access"})
*
*/
class User
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"user:read"})
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @Groups({"user:read"})
* @Assert\NotNull()
*/
private $name;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"user:access"})
*/
private $access;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"user:access"})
*/
private $accessLevel;
}
Любая помощь будет оценена, спасибо!
РЕДАКТИРОВАТЬ
Хорошо, неважно, решение состоит в том, чтобы просто добавить групповой фильтр поверх него:
@ApiFilter(GroupFilter::class, arguments={"parameterName": "groups", "overrideDefaultGroups": false, "whitelist": {"user:access"}})
и адаптировать запрос: GET / users? Access [существующие] = 1 & groups []= пользователь: доступ