WordPressやSymfonyのTipsを中心にアニメや日常の出来事について語ります。
メニュー

【Symfony2】Formに配列を渡してバリデーションチェックさせる方法

この記事は約1分27秒で読めます

symfony2
ゆっきー
ども、カフェブロガーの悠木です。 お気に入りのカフェはドトールコーヒーです。 14時からの限定スイーツ「シューシャポー」が大好きです。

お問い合わせからSymfony2についての質問をいただいたので、記事という形でお返事したいと思います。

質問内容

質問内容が長かったので、短くまとめてました。

  1. アップロードしたファイル(CSV)からデータを読み取り、データベースに格納したい
  2. ファイルのアップロードからのデータの取得は実装済み
  3. CSVは一度配列で読み込んで、EntityにSetしている
  4. $form->isValidでチェックをしたいが、型が違ってるとcreateFormでこける

といった質問でした。

回答内容

配列 → フォーム生成 → フォームにデータセット → $form->isValid()

までの処理を書いてみました。

※動作確認はしてません!

CSRF Protection

CSRF(Cross Site Request Forgeries)とはWebサイトにスクリプトや自動転送(HTTPリダイレクト)を仕込むことによって、閲覧者に意図せず別のWebサイト上で何らかの操作(掲示板への書き込みなど)を行わせる攻撃手法

CSRF 【 Cross Site Request Forgeries 】 クロスサイトリクエストフォージェリ / XSRF

普段は自動生成されたりしている部分なので、気にならないと思いますが、
アップロードファイルから読み込んでEntityを作るとtokenがないと怒られます。

エラー:The CSRF token is invalid. Please try to resubmit the form.

ブラウザ経由でFormを作ってるわけじゃないので、ないもんはないです。

ソースに書いた通りですが、createFormのオプションからCSRFの保護を無効化できます。

'csrf_protection' => falseの部分です。
デフォルトはtrueです。

最初からブラウザ経由で入力しないフォームであればFormTypeでデフォルト値を変更しておくといいです。

参考サイト

関連記事

  1. 第2回!神田ラウンジ勉強会 WordPress Symfony2
  2. symfony2
  3. Symfony2 ウェブ設定画面(エラー)
  4. Symfony MonologでSQLクエリーを出力
  5. Symfony Cache Clear
  6. symfony .gitignore

コメントをお待ちしております

PR

カテゴリー