Как избежать устаревания knp_menu.factory?

Я пытаюсь использовать KNPMenuBundle с Sumfony 3.3, но получаю раздражающее предупреждение:

Службы автосвязывания, основанные на типах, которые они реализуют, устарели, начиная с Symfony 3.3, и не будут поддерживаться в версии 4.0. Вместо этого вы должны переименовать (или псевдоним) службу «knp_menu.factory» в «Knp\Menu\FactoryInterface».

Трассировка: {..../vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php:344: }

Я этот knp_menu.factory вообще не ставил, наверное он автоматом поставился комплектом.

Нужно ли мне что-то настраивать, чтобы это предупреждение исчезло?


person user3429660    schedule 05.07.2017    source источник


Ответы (1)


Я решил это так:

app.component_menu.builder:
    class: AppBundle\Component\Menu\Builder
    arguments: ['@knp_menu.factory', '@event_dispatcher']
    calls:
        - [setAuthorizationChecker, ['@security.authorization_checker']]


Knp\Menu\ItemInterface:
    class: Knp\Menu\MenuItem
    factory: ['@app.component_menu.builder', mainMenu]
    arguments: ['@knp_menu.matcher']
    tags:
        - { name: knp_menu.menu, alias: main }

Knp\Menu\FactoryInterface:
    alias: knp_menu.factory
    public: false

Не уверен, что это рекомендуемое решение, но оно удаляет уведомления об устаревании.

person Sven    schedule 07.07.2017