Symfony 3.3.12を使用して、メニュービルダーをサービスとして使用しようとしています。これはAppBundle/Resources /config/services.ymlと引数1がBuilder :: __ construct()に渡され、インターフェイスKnp Menu FactoryInterfaceが実装されていなければなりません。
imports:
- { resource: "@AppBundle/Resources/config/services.yml" }
services.yml
##########################################################################
# Menu Section
##########################################################################
AppBundle\Menu\Builder:
arguments:
$factory: '@knp_menu.factory'
$doctrine: '@doctrine'
$token: '@security.token_storage'
public: true
tags:
- { name: knp_menu.menu_builder, method: sidebarMenu, alias: sidebar }
としてメインconfig.ymlにインポートしかし、私はrenderd
{{ knp_menu_render('sidebar', {'template': 'Menu/knp_sidebar_menu.html.twig', 'allow_safe_labels': true, 'currentClass':'active'}) }}
として、このエラーが出ますビルダー渡さ0
引数1 :: __構築物()どれも /ホーム/ demousr /アプリ/ベンダー/ knplabs/KNP-メニュー-バンドル/プロバイダ/に呼び出され、与えられていない、インターフェイス KNP \メニューの\ FactoryInterfaceを実装する必要がありますライン上のBuilderAliasProvider.php は121
これは私が
ですそれを容器から引き出すのではなく、行番号は異なるが、githubのコードはこれを確認しているようだ。ソースコードを見て、121行目を見てください。 – Cerad
BuilderAliasProviderの@Cerad @ $ builder = new $ class();これは依存関係を挿入せずに新しいオブジェクトを作成しています。代わりに[BuilderServiceProvider](https://github.com/KnpLabs/KnpMenuBundle/blob/master/Provider/BuilderServiceProvider.php)を使うべきだと思います。私のビルダーはサービスとして認識されていないようです –
うん。 BuilderServiceProviderがコンテナから引き出されます。 – Cerad