1

SF2 バンドルに次の構成があります

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 docsで述べたように。

アプリを実行すると、次のように表示されます。

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

パーツを追加しなくても動作するのでtags、クラスが存在することはわかっています。

パラメーターの値 (完全修飾クラス名) に置き換える%catalogue.title.class%と問題は解決しますが、すべてのプロジェクトでサービス クラスを構成するこの方法を使用しており、この問題を解決するためだけにそれから逸脱したくありません。

[編集] catalogue_title_classorのような別のパラメーターを使用するとmy_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 に答える