Symfony2 ScopeCrossingInjectionException при использовании области прототипа

Моя цель — добавить data_collector в мои классы для отображения некоторой полезной информации на панели инструментов разработчика. Мой сервис:

services:
    my_api.auth.login:
        class: YO\ApiV1\Services\Auth\Login
        arguments:
            - requestId
            - "@old_sound_rabbit_mq.login_rpc"
            - "@service_container"
        scope: prototype

Мне нужен прототип области, чтобы иметь разные экземпляры для каждого нового вызова. Кстати, сервис @old_sound_rabbit_mq.login_rpc тоже имеет область действия «прототип». И я хотел бы подключить data_collector, что можно было бы сделать с помощью:

tags:
    - { name: data_collector, template: "AcmeDebug:Collector:templatename", id: "your_collector_name" }

Но затем я получил исключение:

ScopeCrossingInjectionException: обнаружена инъекция пересечения области действия: Определение «профилировщик» ссылается на службу «my_api.auth.login». который принадлежит к другой иерархии областей. Эта услуга может быть не доступны постоянно. Как правило, безопаснее либо перемещать определение «профилировщик» для области «прототип» или объявить «контейнер» как дочерняя область «прототипа». Если вы можете быть уверены, что другой объем всегда активен, вы можете установить ссылку на strict=false, чтобы избавиться этой ошибки.

И это смущает меня, потому что я не знаю, что делать. Я попытался установить свойство "strict=false", но ничего не происходит.

11
задан richsage 14 December 2013 в 17:01
поделиться