{category}

Laravel - バリデーション

Validator::make()

バリデーター メイク(リクエストとバリデーション

意味 カスタムバリデーションの作成


Validator::make()とは?

Validator::make()は、より複雑なバリデーションルールを適用するためのカスタムバリデータを作成するメソッドです。リクエストデータとバリデーションルールを引数に取り、Validatorインスタンスを返します。

Validator::make()の具体的な使い方

条件付きバリデーションとカスタムルール

use Illuminate\Support\Facades\Validator;

public function updateUser(Request $request, $id)
{
    $user = User::findOrFail($id);

    $validator = Validator::make($request->all(), [
        'name' => 'required|string|max:255',
        'email' => 'required|email|unique:users,email,' . $user->id,
        'password' => 'nullable|string|min:8|confirmed',
        'role' => 'required|in:admin,editor,user',
    ]);

    $validator->sometimes('phone', 'required|digits:10', function ($input) {
        return $input->role === 'admin';
    });

    $validator->after(function ($validator) use ($request, $user) {
        if ($request->role === 'admin' && $user->company_id === null) {
            $validator->errors()->add('company', '管理者ユーザーは会社に所属している必要があります。');
        }
    });

    if ($validator->fails()) {
        return redirect()->back()
                    ->withErrors($validator)
                    ->withInput();
    }

    // バリデーション成功後の処理
    $user->update($validator->validated());

    return redirect()->route('users.show', $user->id)->with('success', 'ユーザー情報が更新されました。');
}

この例では、ユーザー情報更新フォームのバリデーションを行っています。基本的なルールに加え、条件付きバリデーション(管理者の場合は電話番号が必須)やカスタムバリデーション(管理者は会社に所属している必要がある)を実装しています。また、既存ユーザーのメールアドレス重複チェックを行う際に、現在のユーザーを除外しています。

Validator::make()に関するよくある質問

Q. なぜValidator::make()を使う?
A. Validator::make()は、より複雑なバリデーションロジックや条件付きバリデーションを実装する場合に適しています。また、バリデーション後の処理をより細かく制御したい場合にも使用されます。
Q. カスタムルールの追加方法は?
A. Validator::extend()メソッドを使用して、カスタムバリデーションルールを追加できます。これにより、プロジェクト固有の複雑なバリデーションルールを実装することが可能になります。

Validator::make()が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、LaravelのValidator::make()やconfirmed()、nullable()、$request->hasFile()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


Laravelを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!Laravelはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

confirmed()

入力値の確認ルール

種類: バリデーション

nullable()

空値を許可するバリデーション

種類: バリデーション

$request->hasFile()

ファイルアップロードの確認

種類: リクエスト処理

chunkById()

IDを基準に大量データを小分けに処理

種類: 大量データ処理

Sanctum::actingAs()

テスト時の認証ユーザー設定

種類: テスト