2017-08-17 20 views
1

我更新和summurized問題。getForm()後改變表單對象的默認參數的最佳做法()symfony2.8

我想要做的就是改變窗體對象的默認值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 

    } 

是否有可能或如何?

+1

只需添加'$任務 - > setTask( '默認的文本');'之前,你'createFormBuilder'行。 (或者在Task類本身中設置該值,無論是在構造函數中還是作爲$ $ task類變量的默認值) – ccKep

+0

[如何爲Symfony2中的表單字段設置默認值?](https:/ /stackoverflow.com/questions/7913086/how-to-set-default-value-for-form-field-in-symfony2) – yceruto

+0

我想我可以選擇默認任務,但是我想在提交 – whitebear

回答

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