0

I have several services tagged with the same tag. I wonder how to proceed to retrieve the list of all thoses services and to inject it in a form ?

Here is an exemple of what I want at the end:

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

1 回答 1

0

主要思想是定义一个服务来处理特定类型的所有标记服务,然后在编译器传递中将标记服务添加到该服务。

以使用标记服务的文档为例,您可以添加一个返回所有服务的方法:

<?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 回答