私は非常にシンプルなフォームをcreateFormBuilderで作成し、単純なテキストフィールドを1つだけ提供します(フォームにエンティティが添付されていません)。提出後のsymfonyフォームのリセット
フォームを送信するときに、フォームを提出した後にリセットしたい場合は、ロジックを行い、フォームとフォームデータの設定を解除してください。
単純なAjaxリクエストでは、フォーム自体に触れたり、ページを再読み込みしたりすることなく、主にUIの一部を開始するアクションが追加されています。
フォームが明らかにリセットされたくないことを除いて、すべてうまくいきます - 意味:ブラウザのページリロードボタンが押されるたびに、フォームを再度送信するかどうか尋ねる標準ブラウザダイアログが表示されます。最後のレンダーコールがサブミットされる前に入力した最後の値を実行すると、
テンプレートkw.html.twigは簡単です。主に、フォームのレンダリングにUIを使用し、ajaxを処理するためのビットjqueryを使用します。特別なものはありません。
私はこれがなぜ起こっているのか分かりません - 私はちょうどどんな要求でもクリーンなフォームがほしいです。私は以下のサンプルコードのようなものを解除するときに私が得たと思った。
/**
* @Route("/kw", name="show_kw")
*/
public function showKwAction(Request $request)
{
if($request->isXmlHttpRequest()) {
if($request->getMethod() == 'POST') {
// do some logic...
return $this->json(array('kw_success' => true));
}
}
$kwData = array();
$kwForm = $this->createFormBuilder($kwData)
->add('kd', TextType::class)
->getForm();
if($request->isMethod('POST')) {
$kwForm->handleRequest($request);
$formData = $kwForm->getData();
// do some logic with formData...
unset($kwData);
unset($kwForm);
$kwData = array();
$kwForm = $this->createFormBuilder($kwData)
->add('kd', TextType::class)
->getForm();
}
$templateData = array(
'kwForm' => $kwForm->createView()
);
return $this->render(':backend:kw.html.twig', $templateData);
}
ご協力いただきありがとうございます。
EDIT:symfonyの3.1
。最新の情報をクリックすると、ブラウザは最後のリクエストを繰り返します。アドレスバーに入力を促してGETリクエストでリフレッシュしてみると、うまく動作します。 – Alsatian