Symfony2: запрос привязки исключения к форме-сервису - PullRequest
0 голосов
/ 24 марта 2012

У меня есть 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» ссылается на «запрос» службы, который принадлежит к более узкой области.Как правило, безопаснее либо переместить «loc_article.form.handler» в область «запрос», либо, в качестве альтернативы, полагаться на шаблон провайдера, внедряя сам контейнер и запрашивая «запрос» службы каждый раз, когда это необходимо.Однако в редких, особых случаях, в которых это может не потребоваться, вы можете установить ссылку на strict = false, чтобы избавиться от этой ошибки.

Что я могу сделать ???

Ответы [ 2 ]

1 голос
/ 24 марта 2012

В качестве исключения предлагается добавить request scope, например,

<service id="loc_article.form.handler" class="LOC\ArticleBundle\Form\Handler\ArticleFormHandler" scope="request">
1 голос
/ 24 марта 2012

Как работать с областями действия Запись поваренной книги должна ответить на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...