Как избежать устаревания "knp_menu.factory"?
Я пытаюсь использовать KNPMenuBundle
с Sumfony 3.3
но я получаю это досадное предупреждение:
Службы автопроводки, основанные на реализуемых ими типах, устарели с Symfony 3.3 и не будут поддерживаться в версии 4.0. You should rename (or alias) the "knp_menu.factory" service to "Knp\Menu\FactoryInterface" instead.
Trace: {..../vendor/symfony/symfony/src/Symfony/Component/DependencyInjection/Compiler/AutowirePass.php:344: }
I did not set this knp_menu.factory
вообще, вероятно, это было автоматически установлено связкой.
Нужно ли что-то настраивать, чтобы это предупреждение исчезло?
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
Не уверен, что это рекомендуемое разрешение, но он удаляет уведомления об устаревании.