2017-12-17 16 views
0

私はコントローラのアクションを持っています。ユーザにいくつかのフリーテキスト入力を求めるプロンプトが表示されます。送信されたテキストは、ユーザーが最初の解析が正しく行われたことを確認するために別のフォームに出力したいいくつかのオブジェクトに解析されます。別のフォームを生成するsymfonyフォーム

通常、フォーム提出に対する返答を処理した後、私たちは$this->redirectToRoute()と呼んで別のパスに移りますが、私はこれらのオブジェクトをすべて使いたいと思っています。他の場所からリダイレクトすると、私はそれらを失う。

どうすればいいですか?私はコントローラーのアクションメソッドで新しいフォームを作成しようとしましたが、そのサブミットは正しく処理されないようです。

/** 
* @Route("/my_stuff/{id}/text_to_objects", name="text_to_objects") 
*/ 
public function textToObjects(Request $request, Category $category) { 
    $form = $this->createForm(TextToObjectsFormType::class, [ 
        'category' => $category, 
        ]); 
    $form->handleRequest($request); 
    if($form->isSubmitted() && $form->isValid()) { 
     $formData = $form->getData(); 
     $allTheStuff = textParserForStuff($formData['objectText']); 
     $nextForm = $this->createForm(StuffConfirmationFormType::class, $allTheStuff); 
     return $this->render('my_stuff/confirmation.html.twig', [ 
      'form' => $nextForm->createView(), 
      'category' => $category, 
     ]); 
    } 
    return $this->render('my_stuff/text.html.twig', [ 
      'form' => $form->createView(), 
      'category' => $category, 
    ]); 
} 

これは確認フォームを表示する点までの罰金んが、私はそのフォームを送信するとき、私はちょうど元TextToObjectsフォームを表示終わりますか?アルバートの質問に答えるために

TextToObjectsFormTypeはただ三つのフィールド、生成されたオブジェクトのグループ、オブジェクトの起源を選択する方法と、テキスト形式の説明のためのテキストエリアの日付&時間を設定する方法があります。私はdata_classを設定しないので、提出された情報に連想配列が返されます。

class TextToObjectsFormType extends AbstractType { 
    public function buildForm(FormBuilderInterface $builder, array $options) { 
     $builder 
     ->add('textSourceDateTime', DateTimeType::class, [ 
        'widget' => 'single_text', 
        'invalid_message' => 'Not a valid date and time', 
        'attr' => [ 'placeholder' => 'mm/dd/yyyy hh:mm', 
           'class' => 'js-datetimepicker', ], 
        ]) 
     ->add('objectsOrigin', EntityType::class, [ 
        'class' => ObjectSourcesClass::class, 
        ]) 
     ->add('objectText', TextareaType::class, [ 
        'label' => 'Copy and paste object description text here', 
        ]);   
    } 
} 

確認された潜在的に改訂されたオブジェクトをデータベースに戻すにはどうすればよいですか?

ありがとうございました。

+0

TextToObjectsFormTypeのコードを共有できますか? – albert

答えて

0

現在のアーキテクチャを使用する $nextForm = $this->createForm(StuffConfirmationFormType::class, $allTheStuff); は、十分な情報がありません。投稿に投稿リクエストの経路を伝えるためにactionパラメータを含める必要があります。

StuffConfirmationFormTypeに「objectText」フィールドを追加します。フォームが有効であれば

  • はELSE =>保存自分のものがtext_to_objects
にリンクされているアクションで TextToObjectsFormTypeをレンダリングし直し、このアクションでは、このルート
  • のためのアクションを作成しますconfirmation_stuffルート
  • を作成します。

    この手法を使用しても、非表示のフィールドを手動で編集して非機能データを入力することはできません。

    希望します。

  • 関連する問題