Symfony 7/API Платформа 4: Гидратный массив объектов без доктрины ORMPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Symfony 7/API Платформа 4: Гидратный массив объектов без доктрины ORM

Сообщение Anonymous »

Я работаю над проектом, который использует API Platform 4 для реализации API REST, но у него нет базы данных и нет доктрины.

Код: Выделить всё

#[ApiPlatform\Metadata\ApiResource(
operations: [new ApiPlatform\Metadata\Post()],
processor: App\State\OrderProcessor::class,
)]
class Order
{
/** @var Product[] */
#[Symfony\Component\Validator\Constraints\Valid]
public array $products = [];
}

class Product
{
public string $name = '';
}
Но при доступе к Order :: $ products в моем процессоре это не список объектов Product , а ассоциативный массив того, что было предоставлено в виде продуктов в http paylide:

Код: Выделить всё

/**
* @implements ApiPlatform\State\ProcessorInterface
*/
final class OrderProcessor implements ApiPlatform\State\ProcessorInterface
{
/**
* @return App\ApiResource\Order
*/
public function process(
mixed $order,
ApiPlatform\Metadata\Operation $operation,
array $uriVariables = [],
array $context = [],
): mixed {
// $order->products is array[] with whatever was passed in the
// HTTP payload instead of Product[].

return $order;
}
}
Платформа API, похоже, не знает, на какой объект $ продукт должен быть увлажнен, вероятно, потому что она не читает аннотация @var на свойство, поэтому она прибегает к просто непрерывному $ products . Как я могу отобразить продукты $ на продукт ?
мне нужно написать пользовательский нормализатор?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... ctrine-orm
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»