バリデーションを編集する方法です
以下の階層からRegisterController
へ入ってください。
.
└──laravel
└── app
└── Http
└── Controllers
└── Auth
└── RegisterController.php
<?php
// 略
class RegisterController extends Controller
{
// 略
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
// 略
}
validatorメソッドの中身を見てみましょう。
name(ユーザー名)は、必須(required)、文字列(string)、最大255文字まで(max:255)といった定義となっています。
email(メールアドレス)は、メールアドレスの形式であること(email)、usersテーブルの他のメールアドレスと被らないこと(unique:users)といった定義も行なっています。
passwordは、最低8文字以上(min:8)、自分の項目名_confirmedという別の項目(つまり、password_confirmedという項目)と同じ値であること(confirmed)といった定義も行なっています。
以下のように編集してみましょう。
<?php
// 略
class RegisterController extends Controller
{
// 略
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'alpha_num', 'min:3', 'max:16', 'unique:users'], //-- この行を変更
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
// 略
}
追加されたバリデーションルールについて解説します。
alpha_num
は、英数字であるかをチェックします。
min:3は、3文字以上であるかをチェックします。
max:255については、max:16に変更しました。
unique:usersは、usersテーブルの他のレコードのnameカラムに、(ユーザー登録画面から)リクエストされたnameと同じ値が無いことをチェックします。
以上で編集完了です