gpt4 book ai didi

symfony - 如何将服务注入(inject) Symfony 2 Data Fixtures?

转载 作者:行者123 更新时间:2023-12-03 12:29:42 25 4
gpt4 key购买 nike

如何将服务注入(inject) Symfony2/Doctrine2 Data Fixtures ?我想创建虚拟用户并需要 security.encoder_factory对我的密码进行编码的服务。

我尝试将我的数据夹具定义为服务

myapp.loadDataFixture:
class: myapp\SomeBundle\DataFixtures\ORM\LoadDataFixtures
arguments:
- '@security.encoder_factory'

然后在我的数据夹具中
class LoadDataFixtures implements FixtureInterface {

protected $passwordEncoder;

public function __construct($encoderFactory) {
$this->passwordEncoder = $encoderFactory->getEncoder(new User());
}

public function load($em) {

但是得到了类似的东西

Warning: Missing argument 1 for ...\DataFixtures\ORM\LoadDataFixtures::__construct(), called in ...

最佳答案

对于 DoctrineFixturesBundle v. 3,您无需注入(inject)容器即可注入(inject)简单的服务。您可以改用普通的依赖注入(inject):

// src/DataFixtures/AppFixtures.php
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;

// ...
private $encoder;

public function __construct(UserPasswordEncoderInterface $encoder)
{
$this->encoder = $encoder;
}

但是,如果您确实需要容器,您可以通过 $this->container 属性访问它。

文档 here .

关于symfony - 如何将服务注入(inject) Symfony 2 Data Fixtures?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8675866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com