私の 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();
}
));
通常、(コンテナー クラスを使用して) サービスを注入または呼び出す必要があることを考えると、ここで行う方法がわかりません。
サービスを使用してフォーム エンティティに入力する方法は?