У меня есть настраиваемая операция получения в моей сущности для получения клиента по свойству:
<?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, но есть ли решение, чтобы заставить его работать с аннотацией?