如何避免“knp_menu.factory”弃用?

时间:2017-07-05 09:41:19

标签: knpmenubundle symfony-3.3 knpmenu

我正在尝试将KNPMenuBundleSumfony 3.3一起使用,但我收到了这个恼人的警告:

  

不推荐使用基于其实施类型的自动装配服务   自从Symfony 3.3开始,4.0版本将不再支持。你应该   将“knp_menu.factory”服务重命名(或别名)为   “Knp \ Menu \ FactoryInterface”代替。

     
    

跟踪:     {.... /供应商/ symfony的/ symfony的/ SRC / Symfony的/组件/ DependencyInjection /编译器/ AutowirePass.php:344:     }

  

我根本没有设置此knp_menu.factory,可能是由捆绑包自动设置的。

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

1 个答案:

答案 0 :(得分: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

不确定这是否是建议的解决方案,但会删除弃用声明。