ヤマモト
2024.09.11
12
こんにちは、山本です。
今回は前回の利用者登録フォームにバリデーション作成の実装を行いました。
前回のフォームの変更でパスワード確認のフォームを追加しました。
・create.blade.php
<label for="passwword-confirm">パスワード確認</label>
<input type="password" name="password_confirmation">
・名前
入力必須
32文字以内
・メールアドレス
入力必須
メールアドレス形式
・パスワード
入力必須
4文字以上
確認用と一致するか
confirmメソッドにバリデーションを設定
public function confirm(Request $request)
{
$request->validate([
'name' => ['required', 'max:32'],
'email' =>['required', 'email'],
'password' =>['required', 'min:4', 'confirmed'],
],
[
'name.required' => '名前を入力してください',
'name.max' => '最大32文字で入力してください',
'email.required' => 'メールアドレスを入力してください',
'email.email' => 'メールアドレス形式で入力してください',
'password.required' => 'パスワードを入力してください',
'password.min' => '4文字以上で入力してください',
'password.confirmed' => 'パスワードが一致していません',
]);
return view('users/confirm', [
'inputs' => $request->all(),
]);
}
FormRequestとはRequestファサードを継承したもので、バリデーションのルールやメッセージをカスタマイズするのに特化している。
・下記コマンドでファイル作成
php artisan make:request UserRequest
・authorizeメソッド
trueを返すことでUserRequestの使用を許可する
public function authorize()
{
return true;
}
・rulesメソッド
バリデーションを定義する
public function rules(): array
{
return [
'name' => ['required', 'max:32'],
'email' =>['required', 'email'],
'password' =>['required', 'min:4', 'confirmed'],
];
}
・messageメソッド
バリデーションエラーの場合のメッセージをカスタマイズする
public function messages()
{
return [
'name.required' => '名前を入力してください',
'name.max' => '最大32文字で入力してください',
'email.required' => 'メールアドレスを入力してください',
'email.email' => 'メールアドレス形式で入力してください',
'password.required' => 'パスワードを入力してください',
'password.min' => '4文字以上で入力してください',
'password.confirmed' => 'パスワードが一致していません',
];
}
バリデーションを適用する場合UserRequestクラスで受け取るように編集して紐づける
public function confirm(UserRequest $request)
{
return view('users/confirm', [
'inputs' => $request->all(),
]);
}
各フォームの下にエラーメッセージが表示されるように調整。
…
@error('name')
<p style="color:red">{{ $message }}</p>
@enderror
…
@error('email')
<p style="color:red">{{ $message }}</p>
@enderror
…
@error('password')
<p style="color:red">{{ $message }}</p>
@enderror
…
設定どおりのエラーになり、各フォームの下にメッセージが表示されることを確認
今回は利用者登録フォームにバリデーションを作成し、各フォームの下にメッセージが表示されるように実装を行いました。
36
ヤマモト
2024.09.25
9
ヤマモト
2024.09.19
19
ヤマモト
2024.09.17