#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, изменив определение вашего класса в отношении кодировщика паролей