0

同じタグでタグ付けされたサービスがいくつかあります。これらすべてのサービスのリストを取得してフォームに挿入するにはどうすればよいのでしょうか。

最後に私が欲しいものの例を次に示します。

$builder->add('days', 'choice', array(
    'choices' => $SERVICES,
    'multiple' => false,
    'expanded' => false,
    ))
4

1 に答える 1

0

主なアイデアは、特定のタイプのすべてのタグ付きサービスを処理するサービスを定義し、コンパイラ パス内でタグ付きサービスをこのサービスに追加することです。

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()
;

もちろん、おそらくオブジェクトの代わりに文字列を返すために、これらすべてを少し調整する必要があります。

于 2013-05-17T09:22:04.153 に答える