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()に関するよくある質問
Validator::make()が学べる書籍の紹介
「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、LaravelのValidator::make()やconfirmed()、nullable()、$request->hasFile()、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。
よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。
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」カテゴリーが追加されましました!