Установить стандартное значение фильтра для логического фильтра в пакете API - PullRequest
0 голосов
/ 07 апреля 2020

Я ищу способ установить значение по умолчанию для логического фильтра (без настройки фильтра через GET-параметры). Чтобы сделать мой вопрос более понятным: вместо использования этого запроса

http://localhost/api/myclass?archived=0

я просто хочу получить все неархивированные объекты:

http://localhost/api/myclass

Поэтому я хочу установить стандартный набор фильтров (как я также могу установить стандартный набор фильтров заказа).

Мой любимый способ - использовать аннотации. Я не смог найти его в документации по платформе API.

<?php

namespace AppBundle\Entity\MyClass;

use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\BooleanFilter;

/**
 * MyClass
 *
 * @ORM\Table(name="my_class")
 * @ORM\Entity(repositoryClass="AppBundle\Entity\MyClass")
 *
 * @ApiResource(
 *     attributes={
 *          "normalization_context"={"groups"={"api_read", "api_read_v2"}},
 *          "denormalization_context"={"groups"={"api_write"}}
 *     }
 * )
 * @ApiFilter(BooleanFilter::class, properties={"archived"})
 */
class MyClass
{ ...
  /**
     * @var bool|null
     * @Groups({"api_read", "api_write"})
     * @ORM\Column(name="archived", type="boolean", nullable=true)
     */
    protected $archived = 0;

...
} 

1 Ответ

0 голосов
/ 07 апреля 2020

BooleanFilter просто позволяет фильтровать ваш запрос по значению вашего логического значения.

Для вашей проблемы, возможно, попробуйте что-то подобное в аннотации (без нуля!):

@ ORM \ Column (name = "archived", type = "boolean", options = {" по умолчанию ": истинно})

...