Validation 如何将闭包用作验证器?

Validation 如何将闭包用作验证器?,validation,laravel,laravel-5,Validation,Laravel,Laravel 5,是否可以在Laravel中执行以下类似操作: public function rules() { return [ 'sid' => function ($input) { // some custom validation logic. } ]; } public function messages() { return [ 'sid' => "Invalid SID!", ]

是否可以在Laravel中执行以下类似操作:

public function rules()
{
    return [
        'sid' => function ($input) {
            // some custom validation logic.
        }
    ];
}

public function messages()
{
    return [
        'sid' => "Invalid SID!",
    ];
}

我想做一些简单的单次使用验证。创建自定义验证是一种过分的做法

这里至少有两种选择

  • 通过
    AppServiceProvider
    at
    boot()
    方法创建自定义规则:

    Validator::extend('sid', function($attribute, $value, $parameters) {
        // some custom validation logic in order to return true or false
        return $sid == 'foo';
    });
    
    然后,应用如下规则:

    return [
        'sid' => ['foo'],
    ];
    
  • 或扩展
    ValidatorServiceProvider
    类。使用此线程,一步一步解释:


  • 如果您使用的是Laravel 5.6或更高版本,则可以使用

    要使$input在闭包范围内可用,可以使用
    use
    关键字

    'sid' => [ function($attribute, $value, $fail) use $input {
       // your logic here
       //if that fails, so
        return $fail($attribute.' is invalid.');
     }
    ]
    

    我有时会使用
    规则。