laravelのユーザー登録画面でのバリデーション


バリデーションを編集する方法です

以下の階層から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は、英数字であるかをチェックします。

alpha_num - Laravel公式

min:3は、3文字以上であるかをチェックします。

max:255については、max:16に変更しました。

unique:usersは、usersテーブルの他のレコードのnameカラムに、(ユーザー登録画面から)リクエストされたnameと同じ値が無いことをチェックします。

以上で編集完了です