我想获得在验证规则中传递的参数
对于我创建的某些验证规则,我能够从验证规则中获取参数,但对于少数规则,它无法获取参数。
在模型中我使用以下代码:
public static $rules_sponsor_event_check = array(
'sponsor_id' => 'required',
'event_id' => 'required|event_sponsor:sponsor_id'
);
在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;
}
});
但是在这里,我无法使用以下方法获得赞助商id:
$sponsor_id = Input::get($parameters[0]);
作为第4步,整个验证器传递给您用extends
定义的闭包。您可以使用它来获取所有已验证的数据:
Validator::extend('event_sponsor', function ($attribute, $value, $parameters, $validator) {
$sponsor_id = array_get($validator->getData(), $parameters[0], null);
// ...
});
顺便说一下,我在这里使用array_get
是为了避免任何错误,如果传递的输入名称不存在
http://laravel.com/docs/5.0/validation#custom-validation-rules
自定义验证器闭包接收三个参数正在验证的$属性、该属性的$值和一个数组传递给规则的$参数
为什么是Input::get( $parameters );
?你应该检查$parameters的内容
编辑。好吧,我知道你想干什么了。如果您试图获得的值没有被提交,则不会从输入中读取任何内容。看一下
dd(Input::all());
你会发现
sponsor_id=Input::get($parameters[0]);