我正在动态修改表单,如官方example所示。
我之前获得了这个字段,当用户输入时,它通过jQuery自动完成功能提交。当匹配设置正确时,表格应自动更新以添加新字段,根据" previous"字段值。
$builder->get('previous')->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use ($formModifier) {
$previous = $event->getForm()->getData();
$formModifier($event->getForm()->getParent(), $previous);
});
$formModifier = function (FormInterface $form, $previous = null) {
if ($previous instanceof AwesomeEntity) {
$form->add('changes', new AwesomeChangesType(), array(
'data' => $previous->getLastComment('changes'),
'label' => false,
'mapped' => false
));
}
};
正如您所见:
'data' => $previous->getLastComment('changes'),
数据是在提交发生后设置的,但是没有设置,据我所知:默认情况下,symfony在POST_SUBMIT事件后阻止数据修改,因此数据未设置。< / p>
我不知道为什么,但可能有一个很好的理由,这种行为就是这样。所以问题是在没有违反symfony形式逻辑规则的情况下,是否有其他方法为所需字段设置数据?