我无法使用简单的转换器将实体ID集合渲染为表单元素。
在主要表单的buildForm
方法中,我为things
集合提供了此内容:
$collection = $builder->create( 'things', 'collection' );
$collection->addModelTransformer( new EntityTransformer );
$builder->add( $collection );
在EntityTransformer
我确保表单接收由实体主键索引的标量:
public function transform( $entities ){
$scalars = array();
foreach( $entities as $entity ){
$scalars[ $entity->getId() ] = (string) $entity;
}
return $scalars;
}
我现在希望看到名称与实体ID相对应的表单元素,如"form[things][998]", "form[things][999]"
等。但是实体ID键被忽略,元素变为零索引"form[things][0]", "form[things][1]"
等。
无论我使用什么类型的表单元素,或者我指定为数组的标量值,它都是关联映射,在所有情况下都会丢失。
我知道还有其他方法可以实现实体映射,但我想了解为什么这种方法不起作用。
我的问题很简单,为什么收集字段会忽略变换器定义的键并重新索引集合?