Laravelのvalidatorを連想配列に対して利用する

こんにちは、さるまりんです。

Laravelでフォームのバリデーションを行うとき、フレームワークの仕組みを使ってこんなことをします。

public function processData(Request $request)
{
    $validated = $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|email',
        'password' => 'required|string|min:8',
    ]);

    // バリデーションしてOKだった時の処理が続きます


    // 画面表示へ
    return redirect()->route('index')->with('success', '成功です');
}

$requestvalidateメソッドに[]でバリデーションのルールを渡しています。

プログラム内でもで作ったデータをバリデーションすることがあると思います。
連想配列としてできたデータに対して、それが問題ないかをチェックするには次のように処理をします。

// バリデーションをかけたいデータ
$data = [
    'name' => 'salumarine',
    'email' => 'salu@salumarine.com',
    'password' => 'password123'
];

// バリデーションのルール
$rules = [
    'name' => 'required|string|max:255',
    'email' => 'required|email',
    'password' => 'required|string|min:8',
];

$messages = [
    // エラー時のメッセージはここ
    'name.required' => '名前は必須です。',
];

// validatorを取得し
$validator = Validator::make($data, $rules, $messages);

// ここで使う
if ($validator->fails()) {
    // バリデーションエラーが発生した場合
    return redirect('back')->withErrors($validator)->withInput();
} else {
    // バリデーションが成功した場合
    // データを保存するなど
}

知っていると当たり前のことなんですが、これパッと思いつかなかったのでここに実例で残しておきます。
便利な機能は適材適所使って、効率よく安全なプログラムを書いていきたいです。

読んでくださってありがとうございました。

それではまた!