Symfony2:对表单服务的异常绑定请求

时间:2012-03-24 16:12:07

标签: forms exception service symfony request

我有一个FormHandler需要三次依赖注入:Form,Request和ArticleManager

我在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时,出现以下异常:

  

ScopeWideningInjectionException:检测到范围扩展注入:定义“loc_article.form.handler”引用属于较窄范围的服务“request”。通常,将“loc_article.form.handler”移动到作用域“request”更安全,或者通过注入容器本身来依赖提供者模式,并在每次需要时请求服务“请求”。在极少数情况下,特殊情况可能没有必要,那么您可以将引用设置为strict = false以消除此错误。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

如异常建议添加request范围,例如

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