Laravel自定义验证 - 获取参数

Raj*_*mar 10 php validation laravel

我想获取验证规则中传递的参数.

对于我创建的某些验证规则,我能够从验证规则中获取参数,但是对于很少的规则,它没有获取参数.

在模型中我使用以下代码:

public static $rules_sponsor_event_check = array(
    'sponsor_id' => 'required',
    'event_id' => 'required|event_sponsor:sponsor_id'
);
Run Code Online (Sandbox Code Playgroud)

在ValidatorServiceProvider中,我使用以下代码:

    Validator::extend('event_sponsor', function ($attribute, $value, $parameters) {
        $sponsor_id = Input::get($parameters[0]);
        $event_sponsor = EventSponsor::whereIdAndEventId($sponsor_id, $value)->count();

        if ($event_sponsor == 0) {
            return false;
        } else {
            return true;
        }
    });
Run Code Online (Sandbox Code Playgroud)

但在这里,我无法使用以下内容获得赞助商ID:

$sponsor_id = Input::get($parameters[0]);
Run Code Online (Sandbox Code Playgroud)

luk*_*ter 19

作为第4个,整个验证器将传递给您定义的闭包extends.您可以使用它来获取经过验证的所有数据:

Validator::extend('event_sponsor', function ($attribute, $value, $parameters, $validator) {
    $sponsor_id = array_get($validator->getData(), $parameters[0], null);
    // ...
});
Run Code Online (Sandbox Code Playgroud)

顺便说array_get一下,如果传递的输入名称不存在,我在这里使用以避免任何错误.