ホーム » Laravelのバリデーションの利用方法について

Laravelのバリデーションの利用方法について

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' => 'メモ',
],

※期間限定クーポンコード適用中です。