私はコントローラのアクションを持っています。ユーザにいくつかのフリーテキスト入力を求めるプロンプトが表示されます。送信されたテキストは、ユーザーが最初の解析が正しく行われたことを確認するために別のフォームに出力したいいくつかのオブジェクトに解析されます。別のフォームを生成する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',
]);
}
}
確認された潜在的に改訂されたオブジェクトをデータベースに戻すにはどうすればよいですか?
ありがとうございました。
TextToObjectsFormTypeのコードを共有できますか? – albert