0

我正在尝试使用KNPMenuBundlewithSumfony 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它,可能它是由捆绑包自动设置的。

我是否需要配置任何东西才能使此警告消失?

4

1 回答 1

2

我是这样解决的:

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

不确定这是否是推荐的解决方案,但它删除了弃用通知。

于 2017-07-07T13:28:33.653 回答