如何将服务注入 Symfony 2 Data Fixtures?

2023-12-25

我如何将服务注入Symfony2/Doctrine2 数据夹具 http://symfony.com/doc/2.0/bundles/DoctrineFixturesBundle/index.html?我想创建虚拟用户并需要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) {

但得到了类似的东西

警告:缺少参数 1 ...\DataFixtures\ORM\LoadDataFixtures::__construct(),在 ... 中调用


The 在固定装置中使用容器 http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html#using-the-container-in-the-fixtures部分准确描述了您需要什么。

您需要做的就是实施ContainerAwareInterface在你的固定装置中。这将导致 Symfony 通过 Setter-Injection 注入容器。一个示例实体如下所示:

class LoadDataFixtures implements FixtureInterface, ContainerAwareInterface {

     /**
     * @var ContainerInterface
     */
    private $container;

    public function setContainer(ContainerInterface $container = null)
    {
        $this->container = $container;
    }

    public function load($em) {

You don't需要将夹具注册为服务。确保通过导入使用的类use.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将服务注入 Symfony 2 Data Fixtures? 的相关文章

随机推荐