Я использую платформу API, и я определил настраиваемый фильтр после https://api-platform.com/docs/core/filters/#creating-custom-filters
Он работает нормально, но мне нужно, чтобы этот фильтр требовался каждый раз, когда приложение выполняет HTTP-запрос GET для определенного объекта (где установлен фильтр).
Я проверил этот код:
// This function is only used to hook in documentation generators (supported by Swagger and Hydra)
public function getDescription(string $resourceClass): array
{
if (!$this->properties) {
return [];
}
$description = [];
foreach ($this->properties as $property => $strategy) {
$description["similar_$property"] = [
'property' => $property,
'type' => 'string',
'required' => false,
'swagger' => [
'description' => 'Filter using a similar postgres function.',
'name' => $property,
'type' => 'string',
],
];
}
return $description;
}
Хотя в getDescription есть обязательное поле, оно работает только для документации api, а не для HTTP-запроса.
В настоящее время комментарий класса ApiPlatform \ Core \ Filter \ QueryParameterValidateListener: проверяет параметры запроса в зависимости от описания фильтра. Однако он работает только для операций сбора с именем get. (сервис api_platform.listener.view.validate_query_parameters настроен с class = ApiPlatform \ Core \ Filter \ QueryParameterValidateListener в качестве kernel.event_listener с event = kernel.request) — person AythaNzt schedule 02.12.2020
Вы можете применить фильтр через систему событий.
Я применил фильтр с помощью специального поставщика данных.
Установив для auto wire и autoconfigure значение true, я добавил это в App \ DataProvider:
Моя сущность (то, что имеет значение — моя сущность также использует нормализатор группы):
И в сервис.ямл.
И в App \ Swagger исправить документацию Swagger на шлюзе.