2012-03-24 57 views
0

我有一个FormHandler这需要三个dependencie-注射:表格,请求和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:检测到范围扩展注入:定义“loc_article.form.handler”引用属于较窄范围的服务“请求”。通常,将“loc_article.form.handler”移动到作用域“请求”更安全,或者通过注入容器本身来依赖提供者模式,并在每次需要时请求服务“请求”。然而,在罕见的特殊情况下,可能不需要,那么您可以将引用设置为strict = false来消除此错误。

我该怎么办?

回答

1

How to work with Scopes食谱条目应该回答你的问题。

+0

嗨, 这工作: <服务ID = “loc_article.form.handler” 级= “LOC \ ArticleBundle \表格\处理器\ ArticleFormHandler”范围=“请求”> 是否有关于我的services.yml(坏风格等?)的附加事项? Regards – bodokaiser 2012-03-24 17:52:14

1

由于异常提示添加request范围如

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