在 Laravel 8 中,Rule::in
方法用于验证字段值是否在给定的值列表中。如果你想为这个验证规则设置自定义错误消息,可以通过以下几种方式实现:
messages
方法你可以在控制器中使用 messages
方法来定义自定义错误消息。例如:
use Illuminate\Validation\Rule;
public function store(Request $request)
{
$request->validate([
'field_name' => [
Rule::in(['value1', 'value2', 'value3']),
],
], [
'field_name.in' => '自定义错误消息:字段值必须在给定的列表中。',
]);
// 处理请求
}
validator
方法如果你更喜欢使用 validator
方法,可以在闭包中定义自定义错误消息:
use Illuminate\Support\Facades\Validator;
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'field_name' => [
Rule::in(['value1', 'value2', 'value3']),
],
], [
'field_name.in' => '自定义错误消息:字段值必须在给定的列表中。',
]);
if ($validator->fails()) {
return redirect('route_name')
->withErrors($validator)
->withInput();
}
// 处理请求
}
ValidationMessages
trait你还可以在模型中使用 ValidationMessages
trait 来定义自定义错误消息:
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Traits\ValidationMessages;
class User extends Authenticatable
{
use ValidationMessages;
protected $fillable = [
'field_name',
];
public function store(Request $request)
{
$this->validate($request, [
'field_name' => [
Rule::in(['value1', 'value2', 'value3']),
],
]);
// 处理请求
}
protected function validationMessages()
{
return [
'field_name.in' => '自定义错误消息:字段值必须在给定的列表中。',
];
}
}
FormRequest
类如果你使用 FormRequest
类来处理验证,可以在类中定义自定义错误消息:
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
class StoreRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'field_name' => [
Rule::in(['value1', 'value2', 'value3']),
],
];
}
public function messages()
{
return [
'field_name.in' => '自定义错误消息:字段值必须在给定的列表中。',
];
}
}
然后在控制器中使用这个 FormRequest
类:
public function store(StoreRequest $request)
{
// 处理请求
}
以上方法都可以为 Rule::in
字段设置自定义错误消息。选择哪种方法取决于你的具体需求和偏好。通常情况下,使用 FormRequest
类是最推荐的方式,因为它将验证逻辑与控制器分离,使代码更加清晰和可维护。
领取专属 10元无门槛券
手把手带您无忧上云