Заказ нестандартной формы api plateform - PullRequest
0 голосов
/ 07 августа 2020

У меня есть настраиваемая операция получения в моей сущности для получения клиента по свойству:

<?php
namespace App\Entity;
/**
 * @ApiResource(
 *     itemOperations={
 *              "get_by_confirmation_code"= {
 *                 "access_control"="is_granted('IS_AUTHENTICATED_ANONYMOUSLY')",
 *                 "method"="GET",
 *                 "path"="/test/confirmation-code/{confirmationToken}",
 *                 "controller"=UserInformationAction::class,
 *                  "read"=false,
 *                  }
 *     }
 * )
 * @ORM\Entity(repositoryClass=ClientRepository::class)
 */
class Client extends User
{

    /**
     * @Groups({"vouchers_list"})
     * @Assert\NotBlank(groups={"confirm-user"})
     * @ORM\Column(type="string", length=255, nullable=true)
     */
    private $country;

    /**
     * @Assert\NotBlank(groups={"confirm-user"})
     * @ORM\Column(type="string", length=255, nullable=true)
     */
    private $currency;
}

UserInformationAction:

<?php
namespace App\Controller\Authentication;
class UserInformationAction
{
    private $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function __invoke($confirmationToken)
    {
        return $this->userRepository->findOneBy([
            'confirmationToken' => $confirmationToken
        ]);
    }
}

debug: router:

  _preview_error                                   ANY      ANY      ANY    /_error/{code}.{_format}
  default_confirm_token                            ANY      ANY      ANY    /confirm-user/{token}
  default_index                                    ANY      ANY      ANY    /
  api_get_client_information                       GET      ANY      ANY    /api/test/confirmation-code/{confirmationToken}
  api_entrypoint                                   ANY      ANY      ANY    /api/{index}.{_format}
  api_doc                                          ANY      ANY      ANY    /api/docs.{_format}
  api_jsonld_context                               ANY      ANY      ANY    /api/contexts/{shortName}.{_format}
  api_clients_post_collection                      POST     ANY      ANY    /api/clients.{_format}
  api_clients_get_collection                       GET      ANY      ANY    /api/clients.{_format}
  api_clients_get_by_confirmation_code_item        GET      ANY      ANY    /api/test/confirmation-code/{confirmationToken}
  api_users_get_invited_collection                 POST     ANY      ANY    /api/users/invites
  api_users_get_collection                         GET      ANY      ANY    /api/users.{_format}
  api_users_post_collection                        POST     ANY      ANY    /api/users.{_format}
  api_users_add_commercial_collection              POST     ANY      ANY    /api/users/commercial
  api_users_get_item                               GET      ANY      ANY    /api/users/{id}.{_format}
  api_users_delete_item                            DELETE   ANY      ANY    /api/users/{id}.{_format}
  api_users_put-reset-password_item                PUT      ANY      ANY    /api/users/{id}/reset-password

Я получил сообщение об ошибке: не удалось создать IRI для "App \ Entity \ Client" После некоторого исследования я нашел вопрос с той же проблемой: Невозможно сгенерировать IRI для элемента типа Я попробовал упомянутое решение: Невозможно сгенерировать IRI для элемента типа и теперь он работает с файлом yaml, но есть ли решение, чтобы заставить его работать с аннотацией?

...