在我的 Symfony2 项目中,我总是使用“Manager Services”来解耦所有模型层。(例如 WorldManagerService、UserManagerService 等...)
问题是我不知道如何使用这些服务来填写表单中的实体字段(例如表单中的语言组合框字段)
编码:
$builder->add('idlanguage', 'entity',
array(
'class' => 'MyBundle:Language',
'property' => 'name',
'empty_value' => '',
'query_builder' => function (EntityRepository $repository)
{
return $repository->createQueryBuilder('l')
->where('l.idstatus = :status')
->setParameter('status', '1');
}
));
然后,在我的项目中声明服务:
services:
my.world.manager:
class: %my_world.manager_service.class%
arguments: [@doctrine.orm.entity_manager]
我想做类似的事情:
$builder->add('idlanguage', 'entity',
array(
'class' => 'MyBundle:Language',
'property' => 'name',
'empty_value' => '',
'query_builder' => function (WorldManagerService $wms)
{
return $wms->getAllActiveLanguages();
}
));
考虑到通常我需要注入或调用(使用容器类)服务,我不知道该怎么做。
如何使用服务填写表单实体?