我为显示实体的集合过滤的HTML表格,我要显示的每个行中的复选框为将所选择的实体添加到会话变种形式的一部分。
我在想,每个复选框应具备的实体ID作为其价值,我会得到的ID从表单字段数据的数组(OK,所以价值应该是间接裁判的实体,但为求简单)。
我试图创建一个单一的实体类型字段的表单类型,映射到实体的id属性,并嵌入到具有收藏类型字段另一种形式的类型。
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()
;
当窗体渲染,是身份字段中的一个标签,但没有小部件。
它甚至有可能在这个特殊的方式来使用实体和集合类型的字段? 如果是这样,什么可能我是做错了什么?