2012-03-24 7 views
0

Ich habe eine FormHandler die drei dependencie-Injektionen erfordert: Form, anfordern und ArticleManagerSymfony2: Exception Bindungsanforderung zu bilden Bedienungs

ich sie auf diese Weise in services.xml konfiguriert:

<?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> 

Wenn app_dev.php läuft, ich folgende Ausnahme erhalten:

ScopeWideningInjectionExceptio n: Scope Widening Injection erkannt: Die Definition "loc_article.form.handler" verweist auf die Service- "Anfrage", die zu einem engeren Umfang gehört. Im Allgemeinen ist es sicherer, entweder "loc_article.form.handler" in den Geltungsbereich "request" zu verschieben oder sich alternativ auf das Provider-Muster zu verlassen, indem der Container selbst injiziert wird und die Dienst- "Anfrage" jedes Mal angefordert wird, wenn sie benötigt wird. In seltenen Ausnahmefällen, die möglicherweise nicht notwendig sind, können Sie den Verweis auf strict = false setzen, um diesen Fehler zu beheben.

Was kann ich tun ???

Antwort

1

Die How to work with Scopes Kochbucheintrag sollte Ihre Frage beantworten.

+0

Hallo, dies gearbeitet schlägt hinzu: Gibt es noch weitere Dinge zu meiner services.yml (schlechter Stil, etc.?) Grüße – bodokaiser

1

Da die Ausnahme request Umfang zB

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