Я был простой конфигурацией ресурса api-платформы для доступа к списку пользователей и только одного пользователя:
App\Entity\User:
collectionOperations:
get: ~
itemOperations:
get: ~
Эта конфигурация генерирует 2 маршрута:
/GET /api/users
/GET /api/users/{id}
Один элементUser
, которые представляют учетную запись пользователя и связанное физическое лицо:
{
"id": 0,
"username": "string",
"email": "string",
"person": {
"id": 0,
"civility": "string",
"lastName": "string",
"firstName": "string",
"language": "string",
"fullName": "string"
}
}
Затем я хочу обновить определенное поле моей учетной записи: пароль
/PUT /api/users/{id}/updatePassword
{
"password": "string",
"confirmPassword": "string"
}
Моя текущая api-платформаконфигурация для этого маршрута:
App\Resource\DTOs\UpdatePassword:
collectionOperations: []
itemOperations:
put:
method: 'PUT'
path: '/users/{id}/updatePassword'
requirements:
id: '\d+'
swagger_context:
tags: ['User']
summary: Update user account password
namespace App\Resource\DTOs;
class UpdatePassword
{
/** @var string */
public $password;
/** @var string */
public $confirmPassword;
}
Проблема в том, что мои DTO не знают, что нужно обновить пользователя.Как указать, что он связан с пользовательским ресурсом?Я пытался с событиями API-платформы, но я не знаю, когда действовать.
Мне удалось сделать что-то, что работает, но это то, что я удалил все механизмы Api-платформы ...
А вообще как сохранить несколько обновлений на одном ресурсе?
Есть идеи?