メモとして残します。
バリデーションで任意のフィールドに任意のメッセージを設定する方法をメモ。
Laravelのバリデーション便利ですが、たまにくどいエラーメッセージになってしまうことがあるため、
任意のメッセージを設定してあげましょう。
ルールごとに設定できるようです。
今回は、個人的に少しくどいエラーメッセージであるrequired_if
のメッセージをいじります。
■やり方
messageメソッドをオーバライドしてあげることで、任意のフィールドに任意のメッセージを設定できる。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class HogeRequest extends FormRequest
{
//・・・・・・・・・省略
/**
* 定義済みバリデーションルールのエラーメッセージ取得
*
* @return array
*/
public function messages()
{
return [
'description.required_if' => trans('validation.required'),// この場合は必須の時のメッセージを表示します。
];
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rule = [
'is_public' => 'required|in:1,0',
'description' => 'required_if:is_public,1|max:500',
];
return $rule;
}
}
■余談
上記の例だと
description属性のルールでrequired_ifを定義しているため、
「is_publicが1なら、descriptionは入力必須です」
みたいなメッセージで、くどいなと思ったため、設定しました。