Платформа Api, использующая Output с пользовательским Persister - PullRequest
0 голосов
/ 29 апреля 2020

Я создаю класс модели ApiResource MyCustomModel (не Doctrine Entity), у которого есть объявление вывода.

/**
 * @ApiResource(
 * itemOperations={},
 * collectionOperations={"post"={}},
 * output=SomeOutput::class
 * )
 */

Поскольку я хочу выполнить пользовательскую операцию над ним (часть данных, сохраненных в БД через doctrine сущность и часть, отправленные в очередь) Я создал и зарегистрировал MyCustomPersister для обработки этого. Внутри этого персистента я выполняю операции и в конце возвращаю созданную doctrine сущность SomeEntity (потому что я хочу иметь доступ к этой сущности при построении вывода - я хочу вернуть ее идентификатор и статус), а НЕ $ data, которая была Первоначально передано для сохранения.

Я создал класс SomeOutput и создал классы SomeOutputDataTransformer, предполагая, что они будут использоваться для создания выходных данных для запроса, и что возвращаемое мной SomeEntity из MyCustomPersister будет передано туда, но они не используются, Transformer не используется вообще. Структура SomeOutput отображается в SwaggerUI как ответ на этот запрос, но в результате запроса возвращается весь SomeEntity, который я возвращаю в MyCustomPersister.

Чего мне не хватает? Где я ошибся? Есть ли лучшая концепция для этого?

Чего я хочу добиться, так это иметь не сущность ApiResource, часть которой будет сохранена как сущность в БД, а часть отправлена ​​в очередь, и в конце концов я хотите вернуть пользователю 3 из 5 полей этого вновь созданного объекта.

...