【发布时间】:2016-09-08 06:43:50
【问题描述】:
我想在我的 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>
【问题讨论】:
-
没有办法直接使用my.class_name作为参数,因为它不是参数。您将需要使用编译器传递来修改您的服务定义。可能有点参与:symfony.com/doc/current/bundles/configuration.html 和 symfony.com/doc/current/service_container/compiler_passes.html
标签: php symfony dependency-injection