0

UserProviderおよびUserProvider(いくつかの追加データを持つ結合エンティティ) の3 つのエンティティがあります。

ユーザーがボックスにチェックを入れてプロバイダーを指定するフォームを作成しようとしています(これにより、いくつかのUserProviderレコードが生成されるはずです)。

選択肢を使用して新しいフォーム タイプを生成しようとしましたが、正しく動作しないようです。これは私が最後に試したことです:

$form = $this->createFormBuilder($user)
    ->add('userProviders', 'entity', array(
        'class' => 'MyAppBundle:UserProvider',
        'property' => 'provider.name'
        'choices' => $userProviders
    ))
    ->getForm();

現在のユーザーをすべての可能なプロバイダーにマッピングして生成したいくつかのエンティティの配列はどこ$userProvidersにありますが、エンティティが永続化されていないため (必要ではない可能性があるため)、これは機能しません。

Symfony でこれを行う最もクリーンな方法は何ですか?

4

2 に答える 2

1

エンティティ フォーム クラスの内部的な方法を使用して、次のように配列を生成するだけです。

use Doctrine\ORM\EntityRepository;
// ...

$builder->add('userProviders', 'entity', array(
    'class' => 'MyAppBundle:UserProvider',
    'property' => 'provider.name'
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('u')
            //Your Query here
        ;
    },
));

ここから取得: http://symfony.com/doc/master/reference/forms/types/entity.html

可能性のあるケースに対して2つのクエリを実行することもできNOT INます。

于 2013-02-09T11:54:40.677 に答える
0

これに対する解決策として、バインドされていないフォーム リストを作成し、それらを現在のasProvidersと共に永続化しました。UserUserProviders

UserProviderフォームを再表示しても既存の結合エンティティ ( ) が表示されず、それらを表示するには追加の作業が必要になるため、これは理想的ではありません。

于 2013-02-11T12:43:53.863 に答える