getForm() symfony2.8 后更改表单对象默认参数的最佳实践

Posted

技术标签:

【中文标题】getForm() symfony2.8 后更改表单对象默认参数的最佳实践【英文标题】:Best practice for changing default parameter of form object after getForm() symfony2.8 【发布时间】:2018-01-26 00:22:33 【问题描述】:

我更新并总结了问题。

我要做的是在getForm()之后更改表单对象的默认值

public function newAction(Request $request)

    $task = new Task();   
    $form = $this->createFormBuilder($task)
        ->add('task', TextType::class,array('data' => 'default text data') // Set the default data for loaded first time. 
        ->add('save', SubmitType::class, array('label' => 'Save'))
        ->getForm();

    $form->handleRequest($request);

    if ($form->isSubmitted() && $form->isValid()) 
        //I want change the default value of task, I tried a few methods.
         $d = $form->getData();
         $form->get('task')->setData('replace text data'); // not work
         $d->setData('second data'); // notwork

    

有没有可能?

【问题讨论】:

只需在createFormBuilder 行之前添加$task->setTask('Your Default Text');。 (或者在 Task 类本身中设置该值,在构造函数中或作为 $task 类变量的默认值) How to set default value for form field in Symfony2?的可能重复 我想我可以设置默认任务,但我想在提交后更改它 @yceruto ,我猜我的问题有点不同,所以我更新了问题本身 你是指提交后表单中任务字段关联的数据? 【参考方案1】:
Try this one.

 $builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $even) 
        $data = $event->getData();
        $form = $event->getForm();
        if (isset($data['task'])) 

            $data['task'] = "Default Task1";              
            $event->setData($data); 
        
    );

【讨论】:

以上是关于getForm() symfony2.8 后更改表单对象默认参数的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2.8。如何从发布请求中获取数据

Extjs Combo - 如何使用 GetForm().load 将值加载到组合

Symfony2.8 表单 CollectionType 字段 manyTo many

使用 symfony2.8 创建新的 xml 文件并保存在系统中

Ext.Ajax.request和formPanel.getForm().submit()两种提交方法的异同:

对编辑界面上组件控制的代码