【Laravel】バリデーションに無名関数を使用してバリデーションを行う
Laravel でバリデーションに無名関数を使用してバリデーションを行う方法メモ
特殊なバリデーションでそこでしか使用しない、わざわざ独自ルールを作るのも手間などの時に使用する方法です。
サンプル
サンプルとして title
と body
の値が同一ならエラーが出るようなものを書きました。
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);
}
}
]
]);
// ブログポストは有効
}
|
参考