我的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_class
或my_abc
,结果相同。
我正在运行Symfony版本2.3.5。
我做错了什么?
答案 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 }