Jie*_*eng 19 symfony doctrine-orm
如何将服务注入Symfony2/Doctrine2数据夹具?我想创建虚拟用户并需要security.encoder_factory服务来编码我的密码.
我尝试将我的数据夹具定义为服务
myapp.loadDataFixture:
class: myapp\SomeBundle\DataFixtures\ORM\LoadDataFixtures
arguments:
- '@security.encoder_factory'
Run Code Online (Sandbox Code Playgroud)
然后在我的数据夹具中
class LoadDataFixtures implements FixtureInterface {
protected $passwordEncoder;
public function __construct($encoderFactory) {
$this->passwordEncoder = $encoderFactory->getEncoder(new User());
}
public function load($em) {
Run Code Online (Sandbox Code Playgroud)
但得到了类似的东西
警告:缺少参数1 ...\DataFixtures\ORM\LoadDataFixtures :: __ construct(),在...中调用
Eln*_*mov 38
您需要做的就是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) {
Run Code Online (Sandbox Code Playgroud)
你并不需要注册灯具作为一种服务.确保通过导入已使用的类use.
| 归档时间: |
|
| 查看次数: |
11158 次 |
| 最近记录: |