1

可能な場合はサービスコンテナへの参照を削除して、スタックを高速化しようとしています。この場合、私はリクエストだけが必要です:

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

ただし、それはスコープ拡大の問題を投げます。今のところ、コードのリファクタリングには関心がありません。strict=trueを追加して警告を取り除きたいだけです。しかし、YAML構文を正しく理解できないようです。

email_error_message:
  class: Core\MyBundle\Services\Email\ErrorMessage
        arguments:
            - { type: service, id: request, strict: false }
            - %params%

しかし、これは機能していません。何か案は?

編集 私はこのサービスの範囲を変更してリクエストできることに気づきましたが、この場合はそれはオプションではありません。

4

1 に答える 1

4

サービスのスコープをスコープに制限するrequest必要があります。これは、正しいRequestインスタンスが渡されていることを確認する必要があるためです。たとえば、サブリクエスト内からサービスを使用している場合、またはメインリクエストを介してサービスを使用している場合などです。サービス構成を次のように調整します。

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

詳細については、ドキュメントを参照してください。

質問の編集に従って編集します。スコープを変更することはできません。この場合、構文は次のようになります。

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

=記号が追加されています。私はこれがどこにも参照されていないことに注意してください、そしてそれはDIコンテナのコー​​ドを掘り下げたからです;-)

于 2012-04-19T15:03:28.340 に答える