Моя проблема - это метод $this->getUser();
(вызываемый из контроллера) из Symfony Безопасность не может получить мой пользовательский репозиторий.
The "App\Model\ODM\Repository\UserRepository" document repository implements "Doctrine\Bundle\MongoDBBundle\Repository\ServiceDocumentRepositoryInterface", but its service could not be found. Make sure the service exists and is tagged with "doctrine_mongodb.odm.repository_service".
У меня есть CompilerPass, который получает мои репозитории и добавить их в определения контейнеров в зависимости от некоторого значения env. Я добавляю репо с интерфейсами «generi c» (действительными как для ODM, так и для ORM) в качестве ключей И с репо FQCN в качестве ключей, поэтому они должны быть доступны как через общий интерфейс c, так и через истинное имя репо, но Пока работаю только с ODM. Кроме того, я «помечаю» свое репо аргументом doctrine_mongodb
, чтобы расширить ServiceDocumentRepository
baseClass.
Я не включаю compilerPass, потому что класс довольно «тяжелый», но при необходимости я включите его.
Вот мой UserRepo
class UserRepository extends BaseRepository implements RepositoryInterface, UserRepositoryInterface
{
/**
* UserRepository constructor.
*
* @param ManagerRegistry $managerRegistry
*/
public function __construct(ManagerRegistry $managerRegistry)
{
parent::__construct($managerRegistry, User::class);
}
...
My BaseRepo (здесь всего несколько методов, интересно только расширение)
abstract class BaseRepository extends ServiceDocumentRepository implements RepositoryInterface
{
...
Отлично работает "in-app", я мог бы создать пользователя на странице регистрации, но, используя метод $guardHandler->authenticateUserAndHandleSuccess()
после регистрации, я перенаправляюсь на мою домашнюю страницу, где находится $this->getUser();
, а затем у меня появляется сообщение об ошибке, опубликованное выше.
После некоторых исследований выяснилось, что проблема в Doctrine\Bundle\MongoDBBundle\Repository\ContainerRepositoryFactory
container
этого класса, похоже, не имеет никакого моего определения Repo.
I наверняка что-то пропустил но не знаю где. Я помню, как несколько лет делал нечто подобное go, но расширяло DocumentRepository
, а не ServiceDocumentRepository
.
Если вам нужна другая информация, дайте мне знать.