1

私の Symfony2 プロジェクトでは、常に「マネージャー サービス」を使用してすべてのモデル レイヤーを分離しています。(例: 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