Api-Platform GET itemOperation для получения пользователя по электронной почте или по имени пользователя - PullRequest
0 голосов
/ 08 ноября 2018

Как я могу использовать настраиваемое действие контроллера для получения сущности по ее второму идентификатору, например, получить пользователя по электронной почте или имя пользователя?

Я пытался написать resource.yaml так:

App\Entity\User:
    itemOperations:
        get:
            method: 'GET'
            path: '/users/{id}'
        getByEmail:
            method: 'GET'
            path: '/users/email/{emailaddress}'
            controller: 'App\Controller\User\GetByEmailAction'

Это вообще возможный подход или это единственный способ вызвать GET для коллекции и использовать фильтр типа /users?email=...?

1 Ответ

0 голосов
/ 08 декабря 2018

Да, вы можете создать пользовательскую операцию.

namespace App\Controllers;
class GetByEmailAction {
  public function __invoke($emailaddress, EntityManagerInterface $em) {
     $user = $em->getRepository(User::class)->findOneBy[
         'email' => $emailaddress
     ];
     if (!$user) {
         throw new NotFoundException('User not found');
     }
     return $user;
  }
}

проверить документы для получения дополнительных примеров Пользовательская операция

...