在服务的标签定义中使用config.yml参数

时间:2016-09-08 06:43:50

标签: php symfony dependency-injection

我想在我的Bundle服务配置的标签定义中添加一个类名(由用户在app/config/config.yml中配置)。

app/config/config.yml

my:
    class_name: AppBundle\Entity\Product

我的捆绑包的配置:services.xml

<service id="my.entity_listener" class="My\EventListener\MyListener">
    <tag name="doctrine.orm.entity_listener" entity="%my.class_name%" event="preUpdate" />
</service>

这有可能吗?我能得到的只是%my.class_name%。它不会在标签定义中被替换。虽然,我的依赖注入工作正好在上面替换它,在同一个配置文件中:

<service id="my.param_converter" class="My\ParamConverter\MyParamConverter">
    <tag name="request.param_converter" converter="user" priority="10" />
    <argument type="service" id="doctrine.orm.default_entity_manager" />
    <argument>%my.class_name%</argument> <!-- Replaced by AppBundle\Entity\Product -->
</service>

2 个答案:

答案 0 :(得分:0)

在我的项目中,如果我想在config.yml中全局添加一些自定义参数,我会这样做:

parameters:
    my:
      - {class_name: "AppBundle\Entity\Product"}

答案 1 :(得分:-1)

也许尝试使用.reflection代替timeBox,如下所示:

parameters

然后将其用作my