laravelのフォームリクエストでユーザーのemailのバリデーションロジックを実装する際のことで質問させていただきます。
「フィールドが、指定されたデータベーステーブルに存在しないことをバリデートする」uniqueメソッドについて、
自身のカラムの値だけはuniqueルールを無視するigonoreメソッドがあります。
公式リファレンス「指定されたIDのuniqueルールを無視する」
Validatorクラスを用いたバリデーションは、コントローラー内であればすんなり実装できるのですが(teratailの過去質問にもありますね)、このigonoreメソッドをフォームリクエスト内で使用することはできないでしょうか?
フォームリクエスト内だと、ignoreメソッドで無視する対象となる「ユーザーの情報」を渡すことができず困っています。
<?php namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Validation\Rule; class UpdateUsersEmailRequest extends FormRequest { public function authorize() { return true; } public function rules() { return [ 'name' => 'required|max:255', 'email' => ['required', 'email', Rule::unique('users')->ignore($user->id),], // $userを参照できない ]; }
アクション内で処理を書けばいいといえばそれまでなのですが、
フォームリクエストで処理を完結できるに越したことはないと思い質問させていただきます。
ご存知の方がいらっしゃれば、アドバイスよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/20 13:36