2012-04-19 9 views
1

可能な場合は、サービスコンテナへの参照を削除してスタックを高速化しようとしています。この場合、私はただ要求が必要です:Symfony2スコープの拡張通知を削除する

email_error_message: 
    class: Core\MyBundle\Services\Email\ErrorMessage 
     arguments: [ @request, %params ] 

しかし、それはスコープを拡大する問題を投げます。私はコードをリファクタリングすることに心配していません、私はちょうどstrict = trueを追加することによって警告を取り除きたいと思います。しかし、YAMLの構文が正しいとは思えません。

これはうまくいきません。何か案は?

EDIT 私はこのサービスの範囲をリクエストするように変更することができましたが、この場合はオプションではありません。

答えて

4

あなたは、あなたが右Requestインスタンスを渡されていることを確認する必要があるため、requestスコープにサービスの範囲を制限したい - を通じて、あなたが例えばサブリクエストの中からサービスを使用している場合、またはかどうかメインリクエスト。サービスの設定を次のように調整してください。

services: 
    email_error_message: 
     class: Core\MyBundle\Services\Email\ErrorMessage 
     scope: request 
     arguments: [ @request, %params% ] 

詳細については、the docsを参照してください。

を編集して編集すると、範囲を変更できません。

services: 
    email_error_message: 
     class: Core\MyBundle\Services\Email\ErrorMessage 
     arguments: [ @request=, %params% ] 

追加=シンボルと次のようにその場合には、あなたの構文がなければなりません。これはDIコンテナのコー​​ドを掘り下げたものです.-

+0

ありがとう、私はそれを読んだが、残念ながらそれを行うことはできません。私は変更したくない範囲の下にある多くのサービスに影響を与えます(これを反映するように質問を更新します)。 – Mathew

+0

@MatW OK - 私は自分の答えを更新しました。 – richsage

+0

'@ request ='構文はTwigの 'globals'設定では機能しません(' ServiceNotFoundException'を投げています)。私が見つけたのは、より広い範囲のサービスをTwigのグローバルにインジェクトするために見つかったのは '$ this-> controller-> get( 'twig') - > addGlobal( 'A'、$ this-> controller-> get( 'B')) ; 'リクエストリスナーで処理されました! – Wirone

関連する問題