Symfony在存储库中注入参数

时间:2017-02-02 12:09:27

标签: php symfony doctrine-orm

我需要在存储库中注入参数,我尝试添加对服务仓库的调用,但是当我从我的仓库中调用某个函数时,我的调用函数不会调用

    app.repository.file:
    class:            "%app.repository.file.class%"
    factory_service:  doctrine.orm.default_entity_manager
    factory_method:   getRepository
    arguments:
        - "%app.entity.file.class%"
    calls:
         - [setParam,['%md5_suffix%']]

setParam没有调用

    private $param;

public function setParam($param)
{
    $this->param = $param;
}

param有null

我尝试使用JMSDiExtraBundle

    /**
 * @DI\InjectParams({
 *     "param" = @DI\Inject("%md5_suffix%"),
 * })
 */
public function setParam($param)
{
    $this->param = $param;
}

但是在属性%md5_suffix%中有字符串,而不是来自parameters.yml :)的属性

如何从repo中的参数yml注入参数?

2 个答案:

答案 0 :(得分:0)

Factory_service在2.8中已弃用。相反,尝试使用类似的东西:

app.repository.file:
    class: Doctrine\ORM\EntityRepository
    factory: ['@doctrine.orm.entity_manager', getRepository]
    arguments:
      - "%app.entity.file.class%"
    calls:
      - [setParam,['%md5_suffix%']]

答案 1 :(得分:-1)

我创建了另一项服务

economy.param_helper:
    class: "%economy.param_helper.class%"
    arguments:
        - "%md5_suffix%"

并在此回购中注入此服务

    /**
 * @var ParamHelper
 */
private $param;

    /**
 * @DI\InjectParams({
 *     "param" = @DI\Inject("economy.param_helper"),
 * })
 */
public function setParam(ParamHelper $param)
{
    $this->param = $param;
}

并致电$md5Suffix = $this->param->getMd5Suffix();

但我不确定这是正确的方式