さて、今日は「ライブ」データベースの新しい情報でデータベースを更新しました...それ以来、私のフォームの1つで問題が発生しています。コードが必要な場合はお知らせください。これを編集して、必要なコードを投稿します...
日付範囲フィールドとエージェント部門のドロップダウンがあるレポートフォームがあります。最初にページにアクセスしたとき、フォームの最初にこれが表示されます。
The CSRF token is invalid. Please try to resubmit the form
だから私は同じタイプの情報を持つ私の他のフォームの1つに行き、_tokenをチェックすると、これが出てきます:
<input type="hidden" id="ecs_crmbundle_TimeClockReportType__token" name="ecs_crmbundle_TimeClockReportType[_token]" value="87e358fbc4d6d3e83601216b907a02170f7bcd92" />
<input type="hidden" id="ecs_crmbundle_SimpleSalesReportType__token" name="ecs_crmbundle_SimpleSalesReportType[_token]" value="87e358fbc4d6d3e83601216b907a02170f7bcd92" />
最初のものはエラーを表示するものであり、SimpleSalesReportはそうではありません...これがなぜこれを行っているのか、またはどのように私はそれを修正できるのでしょうか?
ありがとう。
CSRFエラーを生成するアクションで$ form-> bindRequest()を使用していますか?私はこの問題を抱えていました。新しいフォームのリクエストをバインドするべきではありません。フォームを同じアクションに投稿する場合は、bindRequestを条件付きでラップし、メソッドがPOSTかどうかを確認します。
if ($this->getRequest()->getMethod() == 'POST') {
$form->bindRequest($this->getRequest());
if ($form->isValid()) {
...
}
}
{{ form_widget(form) }}
を使用してカスタムフォームを作成しても問題はありません。あなたがしなければならないのは、次のように__token
_を追加することだけです:{{ form_widget(form._token) }}
このエラーは何日も私を狂わせました!クリシュナありがとう!フォームテンプレートで、デフォルトのフォーム動作{{ form_widget(form) }}
を使用しないことを選択した場合は、{{ form_rest(form) }}
を配置する必要があります_これが他の人に役立つことを願っています!