Validation 使用闭包的Laravel验证

Validation 使用闭包的Laravel验证,validation,laravel-5,Validation,Laravel 5,使用Laravel 5.4开发我正在尝试Laravel文档中的示例: $validator = Validator::make($request->all(), [ 'title' => [ 'required', 'max:255', function($attribute, $value, $fail) { if ($value === 'foo') { return $fail($attribute.' is in

使用Laravel 5.4开发我正在尝试Laravel文档中的示例:

$validator = Validator::make($request->all(), [
'title' => [
    'required',
    'max:255',
    function($attribute, $value, $fail) {
        if ($value === 'foo') {
            return $fail($attribute.' is invalid.');
        }
    },
],
]))

我得到这个错误:

类闭包的对象无法转换为字符串


为什么?

在5.4中,如果您不想要一个闭包,您可以在验证规则之后传递它,如下所示:

$validator = Validator::make($request->all(), [
    'title' => ['required', 'max:255'],
]);

$validator->after(function ($validator) {
    if ($request->get('field') === 'foo') {
        $validator->errors()->add('field', 'Field is invalid.');
    }
});

if ($validator->fails()) {
    //
}

在Laravel 5.4中,这不起作用。您需要更新到Laravel 5.6,或者至少有的“照明/验证”版本5.6