【问题标题】:Best practice for changing default parameter of form object after getForm() symfony2.8getForm() 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 类变量的默认值)
  • 我想我可以设置默认任务,但我想在提交后更改它
  • @yceruto ,我猜我的问题有点不同,所以我更新了问题本身
  • 你是指提交后表单中任务字段关联的数据?

标签: php symfony


【解决方案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); 
        }
    });

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 2012-03-20
    • 1970-01-01
    相关资源
    最近更新 更多