dongtui8593 2014-08-22 15:08
浏览 47

symfony2动态提交表单修改

I am dynamically modifying form as shown in official example.

I got this field previous which is being submitted via jQuery auto complete feature as user types it. When match is set correctly form should auto update itself to add new field, according to "previous" field value.

$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
        ));
    }
};

As you can see in line:

'data' => $previous->getLastComment('changes'),

The data is being set after submit has occurred, but it's not set, as far as I figured out: is that by default the symfony is preventing data modification after POST_SUBMIT event so the data is not set.

I don't know why, but it's probably for some good reason that this behavior is as it is. So the question would be is there any other way of setting data for needed field(s), in this situation without breaking the rules of symfony form logic?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条
    • ¥15 Python报错怎么解决
    • ¥15 simulink如何调用DLL文件
    • ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
    • ¥30 线性代数的问题,我真的忘了线代的知识了
    • ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
    • ¥188 需要修改一个工具,懂得汇编的人来。
    • ¥15 livecharts wpf piechart 属性
    • ¥20 数学建模,尽量用matlab回答,论文格式
    • ¥15 昨天挂载了一下u盘,然后拔了