Почему я могу автоматически подключить EntityManagerInterface, но не UserInterface - PullRequest
0 голосов
/ 08 мая 2018

Я написал простой Сервис, который использует EntityManagerInterface, и он работает, но когда я пытаюсь подобным образом добавить UserInterface, я получаю:

AutowiringFailedException Невозможно автоматически подключить службу «AppBundle \ Service \ Pricer»: аргумент «$ user» метода «__construct ()» ссылается на интерфейс «Symfony \ Component \ Security \ Core \ User \ UserInterface», но такой службы не существует. Его нельзя зарегистрировать автоматически, поскольку он принадлежит другому корневому пространству имен.

Мой код:

namespace AppBundle\Service;

use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\User\UserInterface;

class Pricer
{
    private $em;
    private $user;

    public function __construct(EntityManagerInterface $em, UserInterface $user)
    {
        $this->em = $em;
        $this->user = $user;
    }
}

Это работает, когда у меня есть только EntityManagerInterface в качестве аргумента (я могу получить Repository и сделать несколько запросов на поиск). Где моя ошибка?

1 Ответ

0 голосов
/ 08 мая 2018

В основном потому, что Doctrine ORM предоставил реализацию по умолчанию для EntityManagerInterface (то есть EntityManager, вы можете проверить это здесь ), тогда как Symfony не сделал с UserInterface. Причина этого в том, что UserInterface - это то, что описывает контрактный / публичный API модели объекта, а не службы, поэтому это не будет соответствовать концепции внедрения службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...