同じタグでタグ付けされたサービスがいくつかあります。これらすべてのサービスのリストを取得してフォームに挿入するにはどうすればよいのでしょうか。
最後に私が欲しいものの例を次に示します。
$builder->add('days', 'choice', array(
'choices' => $SERVICES,
'multiple' => false,
'expanded' => false,
))
同じタグでタグ付けされたサービスがいくつかあります。これらすべてのサービスのリストを取得してフォームに挿入するにはどうすればよいのでしょうか。
最後に私が欲しいものの例を次に示します。
$builder->add('days', 'choice', array(
'choices' => $SERVICES,
'multiple' => false,
'expanded' => false,
))
主なアイデアは、特定のタイプのすべてのタグ付きサービスを処理するサービスを定義し、コンパイラ パス内でタグ付きサービスをこのサービスに追加することです。
Working with Tagged Servicesのドキュメントから例を挙げると、すべてのサービスを返すメソッドを追加できます。
<?php
// ...
class TransportChain
{
// ...
/**
* @return array
*/
public function getTransports()
{
return $this->transports;
}
}
次に、DIC にアクセスできる場所から、次のコマンドを使用します。
// Get access to all services tagged with "acme_mailer.transport"
$transports = $this
->getContainer()
->get('acme_mailer.transport_chain')
->getTransports()
;
もちろん、おそらくオブジェクトの代わりに文字列を返すために、これらすべてを少し調整する必要があります。