我如何将服务注入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(使用前将#替换为@)