フィルタリングされたエンティティのコレクションの html テーブルを表示しています。選択したエンティティをセッション変数に追加するフォームの一部として、各行にチェックボックスを表示したいと考えています。
各チェックボックスには値としてエンティティ ID が必要であり、フォーム フィールド データから ID の配列を取得する必要があると考えています (よろしいので、値はエンティティへの間接的な参照である必要がありますが、シンプルさ)。
エンティティの id プロパティにマップされ、コレクション型フィールドを持つ別のフォーム Type に埋め込まれた、単一のエンティティ型フィールドを持つフォーム Type を作成しようとしました。
class FooEntitySelectByIdentityType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('foo_id', 'entity', array(
'required' => false,
'class' => 'MeMyBundle:FooEntity',
'property' => 'id',
'multiple' => true,
'expanded' => true
));
}
# ...
と
class FooEntitySelectionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('identity', 'collection', array(
'type' => new FooEntitySelectByIdentityType,
'options' => array(
'required' => false,
'multiple' => true,
'expanded' => true,
'attr' => array('class' => 'foo')
),
));
}
# ...
コントローラーでは、エンティティのコレクションを初期データとして使用してフォームが作成されます
$form = $this
->createForm(
new \Me\MyBundle\Form\Type\FooEntitySelectionType,
$collection_of_foo
)
->createView()
;
フォームがレンダリングされると、ID フィールドのラベルが 1 つ表示されますが、ウィジェットは表示されません。
この特定の方法でエンティティとコレクション タイプのフィールドを使用することさえ可能ですか? もしそうなら、私は何が間違っているのでしょうか?