概要
DB接続なども織り交ぜた複雑なValidationをやりたい時、最近忘れがちなので備忘録として。
前提
- Laravel5.5~6.xで確認
実装
HogeRequest.php
.
.
.
class HogeRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'fuga_id' => [
'required',
function ($attribute, $value, $fail) {
// ここにロジックを書く
$fuga = Fuga::find($this->input('fuga_id'));
if ($fuga !== null) {
return $fail('fugaをすでにしています');
}
},
],
];
}
解説
- rulesに
function ($attribute, $value, $fail) {}
を使用することで、複雑なValidationを表現できる -
$this->input({$name})
で値を取得できる -
return $fail({$message})
でValidation失敗時のメッセージを返却できる
参照
すみません。ブックマークし忘れてしまいました...