Автоматическое подключение Symfony 4 в Entity не работает

Я пытаюсь выполнить автоматическое подключение в своей пользовательской сущности Symfony \ Component \ Security \ Core \ Encoder \ UserPasswordEncoderInterface и получение ошибки Слишком мало аргументов для функции App \ Entity \ User :: __ construct ().

public function __construct(UserPasswordEncoderInterface $encoder)
{
    $this->packages = new ArrayCollection();
    $this->passwordEncoder = $encoder;
}

В моем services.yaml

services:
# default configuration for services in *this* file
_defaults:
    autowire: true      # Automatically injects dependencies in your services.
    autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
    public: false       # Allows optimizing the container by removing unused services; this also means
                        # fetching services directly from the container via $container->get() won't work.
                        # The best practice is to be explicit about your dependencies anyway.

# makes classes in src/ available to be used as services
# this creates a service per class whose id is the fully-qualified class name
App\:
    resource: '../src/*'
    exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

# controllers are imported separately to make sure services can be injected
# as action arguments even if you don't extend any base controller class
App\Controller\:
    resource: '../src/Controller'
    tags: ['controller.service_arguments']

Вы видите эту часть services.yaml "exclude: ... Entity ..."? Это, в частности, говорит о том, что НЕ следует автоматически подключать что-либо в каталоге Entity. Сущности доктрины - это не услуги. Для большинства практических целей в них нельзя вводить какие-либо вещества.

Cerad 11.08.2018 14:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
2
1
2 854
1

Ответы 1

Как указано в комментарии, сущности специально не рассматриваются как службы, поэтому не могут использовать автоматическое подключение.

Предполагается, что сущности будут использоваться для простых манипуляций с данными. Если вам нужно получить доступ к другим компонентам Symfony, одним из ваших вариантов является создание класса менеджера, который обрабатывает дополнительную работу или полагается на прослушиватели событий.

Другие вопросы по теме