在services.yml中标记服务后,symfony开始抛出ReflectionException

时间:2013-10-09 07:57:54

标签: symfony

我的SF2 Bundle中有以下配置

parameters:
    catalogue.title.class: My\SomeBundle\Services\TitleService

services:
    catalogue.title:
        class: %catalogue.title.class%

这就像魅力一样。

现在我想增强已配置的服务并对其进行标记,以便注入knp_paginator(我也尝试过使用其他标记)。我的配置变为:

parameters:
    catalogue.title.class: My\SomeBundle\Services\TitleService

services:
    catalogue.title:
        class: %catalogue.title.class%
        tags: 
            - { name: knp_paginator.injectable, paginator: knp_paginator }

为了使提到的标签起作用,该服务实现了Knp\Bundle\PaginatorBundle\Definition\PaginatorAware。正如KnpPaginatorBundle文档中提到的那样。

运行我的应用程序将显示以下内容:

ReflectionException: Class %catalogue.title.class% does not exist

由于它在不添加tags部分的情况下有效,我知道该类确实存在。

用参数值(完全限定的类名)替换%catalogue.title.class%解决了这个问题,但我们正在使用这种方式在我们所有的项目中配置我们的服务类,并且真的不想偏离只是为了解决这个问题。

[编辑]使用其他参数,例如catalogue_title_classmy_abc,结果相同。

我正在运行Symfony版本2.3.5。

我做错了什么?

1 个答案:

答案 0 :(得分:-2)

由于参数类的名称和提供的服务名称,可能会抛出此异常。

尝试重命名

parameters:
catalogue.title.class: My\SomeBundle\Services\TitleService

到其他名称

parameters:
catalogue_title.class: My\SomeBundle\Services\TitleService

并使用此

services:
catalogue.title:
    class: %catalogue_title.class%
    tags: 
        - { name: knp_paginator.injectable, paginator: knp_paginator }