1

我的 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_classormy_abc具有相同的结果。

我正在运行 Symfony 2.3.5 版。

我究竟做错了什么?

4

1 回答 1

-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 }
于 2013-10-09T08:03:10.340 回答