2012-03-24 7 views
0

サービスを形成するために、例外バインディング要求私は3 dependencie-注射を必要とFormHandlerを持っている:フォーム、リクエストとArticleManagerSymfony2の:

私はservices.xmlの中でそれらをこのように構成された:

<?xml version="1.0" ?> 

<container xmlns="http://symfony.com/schema/dic/services" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 

<services> 
    <!-- ArticleManager - Persistence layer --> 
    <service id="loc_article.manager" class="LOC\ArticleBundle\Entity\ArticleManager"> 
     <argument type="service" id="doctrine.orm.entity_manager" /> 
     <argument>LOC\ArticleBundle\Entity\Article</argument> 
    </service> 

    <!-- ArticleForm - Business layer --> 
    <service id="loc_article.form" factory-method="createNamed" factory-service="form.factory" class="Symfony\Component\Form\Form"> 
    </service> 

    <service id="loc_article.form.type" class="LOC\ArticleBundle\Form\Type\ArticleFormType"> 
     <argument>LOC\ArticleBundle\Entity\Article</argument> 
    </service> 

    <service id="loc_article.form.handler" class="LOC\ArticleBundle\Form\Handler\ArticleFormHandler"> 
     <argument type="service" id="loc_article.form" /> 
     <argument type="service" id="request" /> 
     <argument type="service" id="loc_article.manager" /> 
    </service> 

</services> 

app_dev.phpを実行しているとき、私は次の例外を取得:

ScopeWideningInjectionExceptioをn:Scope Widening Injection detected:定義「loc_article.form.handler」は、狭い範囲に属するサービス「要求」を参照します。一般に、 "loc_article.form.handler"をスコープ "request"に移動するか、コンテナ自体を注入し、必要になるたびにサービス "request"を要求することによって、プロバイダパターンに依存する方が安全です。しかし、まれにしか必要ないかもしれない特別なケースでは、strict = falseへの参照を設定してこのエラーを取り除くことができます。

私は何ができますか?

答えて

1

How to work with Scopesクックブックのエントリから質問にお答えください。

+0

こんにちは、 示唆するように、これは働いていた: <サービスID = "loc_article.form.handler" クラス= "LOC \ ArticleBundle \フォーム\ハンドラー\ ArticleFormHandlerを"スコープ= "リクエスト"> 私のservices.yml(悪いスタイルなど)について言及する追加のものはありますか よろしく – bodokaiser

1

例外がrequestスコープなどを追加

<service id="loc_article.form.handler" class="LOC\ArticleBundle\Form\Handler\ArticleFormHandler" scope="request">