JavaScriptを有効にしてください

【Laravel】バリデーションに無名関数を使用してバリデーションを行う

 ·  ☕ 1 分で読めます

【Laravel】バリデーションに無名関数を使用してバリデーションを行う

Laravel でバリデーションに無名関数を使用してバリデーションを行う方法メモ
特殊なバリデーションでそこでしか使用しない、わざわざ独自ルールを作るのも手間などの時に使用する方法です。

サンプル

サンプルとして titlebody の値が同一ならエラーが出るようなものを書きました。
Laravelのドキュメントから改変したもののためControllerで記載するような形になっていますがFormRequestのruleでも同じような書き方は可能です。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
 * 新ブログポストの保存
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    $validated = $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => [
            'required',
            // $attribute 属性
            // $value 値
            // $fail 失敗処理
            function($attribute, $value, $fail) use($request) {
                // title と body の値が同じならエラーとする
                if($request->input('title') == $value){
                    $fail('Error!!' . $attribute);
                }
            }
        ]
    ]);

    // ブログポストは有効
}

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer