Tech memo

日々学んだ技術のびぼうろく

Laravel5.4 FormRequest でバリデーションエラーメッセージを名前付きにする方法

はじめに

1ページに複数のフォームがあるとき (サイドバーにログインフォーム、メインコンテンツにユーザ登録フォームがある場合)
とかに名前付きエラーバグ (Named Error Bags) と使うと
View 側で出力するエラーメッセージのアクセスを切り替えることができる。
便利。

でもFromRequest を使った場合の名前付きエラーバグのやり方が見つからなかったので記録しておく。

スポンサーリンク

FormRequestを使ったときのバリデーションの名前付きエラーバグの方法

UserRequest クラスがあったとする。

UserRequestに

protected $errorBag = 'user';

を追加だけ。 View からは

$errors->user->all()

でアクセスできるようになる。

注意

View からアクセスするとき、

$errors->all()

は空になる。

バリデーションのエラーメッセージ出力を

@if ($errors->all()) 
・・・
@endif

で行なっている場合は、

@if ($errors->user->all())
・・・
@endif

と修正しないとバリデーションメッセージが表示されなくなる。

まとめ

簡単にできた。

参考

スポンサーリンク

一から整理するクッキーとセッション

はじめに

クッキーとセッションっていっつもこんがってよくわかんなくなる。
で、いざ使おうとした時に毎回調べて納得してまた忘れる…の繰り返しなので
もう忘れないようにメモしておくことにした。

目次

スポンサーリンク

クッキー

  • WebサーバがHTTP ヘッダーに格納するデータ
  • クライアントのブラウザに保存される
  • よく保存されるデータ
    • 利用者の識別や属性に関する情報
    • 利用者が最後に訪れた日時
  • 保存しない方がいいデータ
    • ログイン情報などの改ざんされてはいけないデータ

クッキーはクライアント側に保存するデータのため、 容易に改ざんできてしまう。

そのため、ログイン情報など改ざんされてはいけないデータはクッキーではなくセッションを使う。

▼Request Header
:authority:webtools.yjhm214.com
:method:GET
:path:/
:scheme:https
accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
accept-encoding:gzip, deflate, sdch, br
accept-language:ja,en-US;q=0.8,en;q=0.6
cookie:XXX=xxx ← ブラウザに保存されているクッキー
upgrade-insecure-requests:1
user-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36
▼Response Header
cache-control:no-cache, private
content-encoding:gzip
content-type:text/html; charset=UTF-8
date:Mon, 17 Apr 2017 02:17:56 GMT
server:nginx
set-cookie:XXXXXX=xxxx; expires=Mon, 17-Apr-2017 04:17:56 GMT; Max-Age=7200; path=/ ← サーバで生成されてセットされたクッキー
status:200

セッション

  • サーバに保存するデータ。
  • それぞれのセッションはセッションID という識別子に紐づいている。
  • セッションを取り出すときはクライアントからセッションID送信する。
  • セッションIDはクッキーに保存する。
  • セッションはWebブラウザを閉じるまで保存される。
  • よく保存されるデータ
    • ログイン情報
    • ECサイトなどのカートに入れた商品情報

関連記事

www.yjhm214.com

スポンサーリンク