1

在我的 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();
        }
    ));

考虑到通常我需要注入或调用(使用容器类)服务,我不知道该怎么做。

如何使用服务填写表单实体?

4

0 回答 0