質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

5269閲覧

[laravel]フォームリクエストの中でuniqueを無視するignoreメソッドを使う方法

marutto

総合スコア32

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2020/01/20 13:19

編集2020/01/20 13:21

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を参照できない ]; }

アクション内で処理を書けばいいといえばそれまでなのですが、
フォームリクエストで処理を完結できるに越したことはないと思い質問させていただきます。

ご存知の方がいらっしゃれば、アドバイスよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

可能です
FormRequestはIlluminate\Http\Requestをextendsしていますので、認証済みであれば$this->user()で取得できます

投稿2020/01/20 13:24

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marutto

2020/01/20 13:36

素早い回答ありがとうございます! アドバイスの通り、$this->user()でロジックが実装できました! 公式リファレンス「認証」の章にも、アドバイス通り「認証済みユーザーの取得」が書かれていました。 お恥ずかしい限りですが、お陰様でユーザー情報編集のフォームリクエストはまとまったものが実装できそうです! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問