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

#php #symfony #fixtures

#php #symfony #приспособления

Вопрос:

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

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

 
use DoctrineBundleFixturesBundleFixture;

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: AppDataFixturesAppFixtures::$container
  

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

Ответ №1:

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