Как изменить контекст нормализации при применении фильтра - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть 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 []= пользователь: доступ

...