如何转换实体集合以形成由其ID标记的元素?

时间:2014-10-10 11:59:19

标签: symfony

我无法使用简单的转换器将实体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]"等。

无论我使用什么类型的表单元素,或者我指定为数组的标量值,它都是关联映射,在所有情况下都会丢失。

我知道还有其他方法可以实现实体映射,但我想了解为什么这种方法不起作用。

我的问题很简单,为什么收集字段会忽略变换器定义的键并重新索引集合?

0 个答案:

没有答案