Я создал настраиваемый контроллер для операции PUT в объекте User, чтобы зашифровать пароль при обновлении данных пользователя.
функция _invoke:
/**
* @Route(
* path="/api/users/{id}",
* methods={"PUT"},
* defaults={"_api_resource_class"=User::class}
* )
* @param User $data
* @return JsonResponse
*/
public function __invoke(User $data): JsonResponse
{
dd($data);
return new JsonResponse([]);
}
Пользователь объекта:
/**
* @ApiResource(
* collectionOperations={"get"},
* itemOperations={"get",
* "put"={
* "controller"=UpdateUserController::class,
* }, "delete", "patch"}
* )
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User implements UserInterface
{
Но когда я отправляю запрос с новыми данными, поля равны нулю, а поле createdAt имеет текущее время, это похоже на то, что он пытается создать нового пользователя вместо того, чтобы указывать его идентификатор в путь к URL-адресу
^ App\Entity\User {#6197 ▼
-id: null
-email: null
-roles: []
-password: null
-firstName: null
-lastName: null
-createdAt: DateTime @1588765411 {#6196 ▼
date: 2020-05-06 11:43:31.115062 Atlantic/Azores (+00:00)
}
}
Есть ли правильный способ получить значения в аргументе $ data?