21

さて、今日、「ライブ」データベースからの新しい情報でデータベースを更新しました...それ以来、フォームの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 はそうではありません...なぜこれがこれを行っているのか、どうすれば修正できるのでしょうか?

ありがとう..

4

3 に答える 3

26

CSRF エラーを生成するアクションで $form->bindRequest() を使用していますか? この問題がありました。新しいフォームのリクエストをバインドするべきではありません。フォームを同じアクションに投稿する場合は、メソッドが POST かどうかを確認する条件で bindRequest をラップします。

if ($this->getRequest()->getMethod() == 'POST') {
  $form->bindRequest($this->getRequest());
  if ($form->isValid()) {
    ...
  }
}
于 2012-05-11T19:44:16.327 に答える
22

{{ form_widget(form) }}カスタムフォームの作成に問題なく使用できます。あなたがしなければならないのは次の_tokenように追加することです: {{ form_widget(form._token) }}

于 2012-09-02T18:06:58.473 に答える
18

このエラーは私を何日も夢中にさせました! ありがとうクリシュナ!{{ form_widget(form) }}フォーム テンプレートでデフォルトのフォーム動作を使用しないことを選択した場合は、次のように設定する必要があり{{ form_rest(form) }} ます。

于 2012-07-03T12:19:50.373 に答える