2017-08-17 5 views
1

私は質問を更新して概説しました。私がやりたいことをgetForm後のフォームオブジェクト(のデフォルト値を変更しているgetForm()の後のフォームオブジェクトのデフォルトパラメータを変更するためのベストプラクティスsymfony2.8

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

'$ task-> setTask( 'デフォルトテキスト');'を 'createFormBuilder'行の前に追加するだけです。 (または、コンストラクタ内のタスククラス自体の値を '$ 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); 
     } 
    }); 
関連する問題