Laravelのバリデーションの利用方法について
Laravelのバリデーションには方法が2つあります。
1つは、コントローラーを利用したバリデーション
もう一つは、Requestクラスを利用したバリデーション
です。
コントローラーを利用したバリデーションについて
1.bookcontrollerのupdateに下記を追加する。
$validated = Validator::make($request->all(), [ 'name' => 'required|max:255', 'status' => ['required', Rule::in(BOOK::BOOK_STATUS_ARRAY)], ]); if($validated->fails()) { return redirect()->route('book.edit', ['id' => $request->input('id')])->withErrors($validated)->withInput(); }
2.inputタグの下に下記を追加する
@error('name')
<div class="text-red-600">{{ $message }}</div>
@enderror
Requestクラスを利用したバリデーションについて
1.requestクラスを作成する
sail php artisan make:request BookRequest
2.BookRequestのauthorizeの戻り値をtrueにする
return true;
3.rulesを設定する
return [
'name' => 'required|max:255',
'status' => ['required', Rule::in(BOOK::BOOK_STATUS_ARRAY)],
'author' => 'max:255',
'publication' => 'max:255',
'note' => 'max:1000',
'read_at' => 'nullable|date'
];
4.bookcontrollerのupdateにBookRequestを追加する
use App\Http\Requests\BookRequest;
public function update(BookRequest $request)
エラーメッセージの表示について
inputタグの下に配置する
@error('status')
<div class="text-red-600">{{ $message }}</div>
@enderror
とか...
@error('author')
<div class="text-red-600">{{ $message }}</div>
@enderror
フォームの入力値を記録するための方法について
フォームの入力値を記録するためには、oldという関数を利用します。
これをしないと、入力後に値が元にもどってしまって、再度変更する必要があります。
1.input
value="{{ old('name', $book->name) }}"
2.selectbox
<option value="{{$key }}" @if($key === (int)old('status', $book->status)) selected @endif>{{$value }}</option>
バリデーションのエラーメッセージを日本語にする方法について
日本語の言語ファイルは「lang/ja/validation.php」になるので、こちらにattributesを追加して英語表記、日本語表記の配列を作ります。
'attributes' => [
'password' => 'パスワード',
'status' => 'ステータス',
'name' => '名前',
'author' => '著者',
'publication' => '出版',
'read_at' => '読み終わった日',
'note' => 'メモ',
],
※期間限定クーポンコード適用中です。