我有一个实体site
,其中包含Automate
个实体的集合...
我想要这样的自定义表单字段类型:
我已经查看过并尝试对字段进行编码,但是它不起作用... 因此,使表格扩展AbstractType,在此表格中,我放置了3个未映射的输入... (2个选择和一个隐藏的输入)。
我制作了一个用于将元素从一个选择移到另一个的js,并将ID列表保留在隐藏的输入中... 将变压器附加到表格...
所以对我来说,这时我的表单加载了集合,转换为字符串,渲染了表单(没有值,我需要将值移动到hiddendInput中,我还不知道(也许在渲染模板中) )
我需要在pre_submit上添加一个侦听器,以报告隐藏值...
数据传递到反向转换器,我有newCollection ....
我所在领域的在制品代码:
$repository = $this->entityManager->getRepository($options['lc_data_class']);
$builder
->add('lc_internal_available', ChoiceType::class, [
'mapped' => false,
'required' => false,
'multiple' => true,
'attr' => [
'size' => $options['lc_display'],
]
])
->add('lc_internal_selected', ChoiceType::class, [
'required' => false,
'mapped' => false,
'multiple' => true,
'attr' => [
'size' => $options['lc_display'],
]
])
->add('lc_internal_hidden_drive', TextType::class, [
'required' => false,
'mapped' => false,
])
->addViewTransformer(new CallbackTransformer(
function ($automatesCollection) {
return join(',', array_map(function (Automate $automate) {
return $automate->getId();
}, $automatesCollection->toArray()));
},
function ($idsAutomate) use ($repository) {
$collection = new ArrayCollection();
foreach (explode(',', $idsAutomate) as $id) {
$collection->add($repository->find($id));
}
return $collection;
})
)