0
でサービスを生成します。dynamicaly私はこのような何かを設定するためにsymfonyのとYAMLを使用していsymfonyの
foo_menu:
groups:
main:
items:
# ...
side:
items:
# ...
footer:
items:
# ...
私の考えはfoo_menu.groups
の下で定義された各ツリーは、自身のサービス定義を持つべきであるということでした。各サービスは、例としてMenuService
であり、定義されたすべての項目がその中にあります。各サービスは、名前でアクセス可能でなければなりません。 foo.menu.main
、foo.menu.side
、...
メニュービルディングは完全に機能しますが、サービス名の登録方法と場所はわかりません。
私は、コンパイラのパスを使用しようとしましたが、それは動作しません。
final class MenuCompilerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
// ...
foreach ($names as $name) {
$id = sprintf('foo.menu.group.%s', $name);
$menu = $factory->getMenu($name);
$container->set($id, $menu);
}
}
}
あなたは完全なSymfonyフレームワークを使用していますか?そうであれば、サービス自体ではなく、サービス定義を作成するためにコンパイラが渡すことが望まれます。他のバンドルの例を見てみましょう。あなたが何か異なったことをしているのであれば、「うまくいかない」という考えが助けになるかもしれないという考えがあります。 – Cerad
ありがとう、それは手がかりだった! –