【发布时间】:2015-07-27 12:07:30
【问题描述】:
我找不到将“模型”数组传递给选择类型的正确方法。它需要“规范”数据,但这可能是代码重复,很多情况下恕我直言。
重复模型转换器的代码
$vehicles = $repo->findAll();
$vehicleChoice = $builder
->create('vehicle', 'choice', [
'choices' => \array_map(
function(Vehicle $v) {
return $v->getId(); // same as VehicleModelTransformer::transform
}, $vehicles),
])
->addModelTransformer(
new VehicleModelTransformer($this->em)
)
;
对比
表单应该使用模型转换器来初始化规范数据
$vehicleChoice = $builder
->create('vehicle', 'choice', [
'choices_as_model' => $repo->findAll(), // anything like that
])
->addModelTransformer(
new VehicleModelTransformer($this->em)
)
;
任何人都知道如何编写第二种方式,或者将模型数组转换为规范数据?在 symfony 组件中,modelToNorm 是一个私有方法。该代码也不可重用。
谢谢!
【问题讨论】:
-
有趣的问题...我发现它正在寻找相反的 - 一种将 ViewData 数组提供给 EntityType 字段的方法,而不是使用 QueryBuilder 提供它。并让 EntityType 自动将所需的视图数据数组转换为所需的模型(在表单提交等上)。