我有几个使用相同标签标记的服务。我想知道如何继续检索所有thoses服务的列表并将其注入表单?
这是我最后想要的例子:
$builder->add('days', 'choice', array(
'choices' => $SERVICES,
'multiple' => false,
'expanded' => false,
))
答案 0 :(得分: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()
;
当然,你必须稍微调整一下这一点,以便返回字符串而不是对象。