Использовать сервисный контейнер в FOS doctrineFIxture

Я использую DoctrineFixtureBundle для управления своим приспособлением в своем веб-приложении, и я хотел бы использовать изображения по умолчанию для инициализации медиа.

Для этого мне нужно получить доступ к сервисному контейнеру, чтобы получить параметр RootDir. Вот мои приспособления:


use Doctrine\Bundle\FixturesBundle\Fixture;

class AppFixtures extends Fixture
{
    private $passwordEncoder;

    public function __construct(UserPasswordEncoderInterface $passwordEncoder)
    {
        $this->passwordEncoder = $passwordEncoder;
    }
    public function load(ObjectManager $manager)
    {
        $root = new User();

        //init user parameters

        $image = new Image();
        $image->setImageFile(fopen($this->container->getRootDir().'public/image/default/no-profile-pic/jpg', 'r'));
        $root->setProfilePic($image);

        $manager->persist($root);
    }
}

Я следовал этому документация, но он возвращает мне следующую ошибку:

 Notice: Undefined property: App\DataFixtures\AppFixtures::$container

Я глуп или класс AppFixture не знает о контейнере?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
38
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Доступ к полному контейнеру больше не является решением. Вместо этого вам нужно использовать DI, изменив определение вашего класса, как для вашего кодировщика паролей.

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