- バリデーションルールの作成:
まず、
app/Http/Requests
ディレクトリに新しいリクエストクラスを作成します。例えば、UniqueEmailRequest
という名前のクラスを作成しましょう。このクラスはIlluminate\Foundation\Http\FormRequest
を継承する必要があります。
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UniqueEmailRequest extends FormRequest
{
// バリデーションルールを定義する
public function rules()
{
return [
'email' => 'required|email|unique:users,email',
];
}
}
上記の例では、email
フィールドが必須で、メールアドレスの形式であること、そしてusers
テーブルのemail
カラムと一意であることをバリデーションしています。
- コントローラーでバリデーションを使用する:
次に、バリデーションを使用するコントローラーメソッドを作成します。例えば、
UserController
という名前のコントローラーを作成しましょう。
namespace App\Http\Controllers;
use App\Http\Requests\UniqueEmailRequest;
class UserController extends Controller
{
public function store(UniqueEmailRequest $request)
{
// バリデーションを通過した場合の処理
}
}
上記の例では、store
メソッドにUniqueEmailRequest
を引数として渡しています。Laravelは自動的にリクエストをバリデーションし、バリデーションに失敗した場合はエラーレスポンスを返します。
これで、リクエストのバリデーションが完了しました。もしバリデーションに失敗した場合、Laravelはエラーメッセージをセッションに保存し、バリデーションエラーが発生したページにリダイレクトします。
以上がLaravelでユニークなメールのバリデーションを実装する方法です。これにより、重複するメールアドレスを持つユーザーの登録を防ぐことができます。