我在Laravel 5.6中的服务提供商中遇到了异常行为
我有一个自定义验证规则,该规则曾经存在于我的表单请求中。在表单请求中它工作得很好,但是我决定将其和其他一些规则移至自定义服务提供商,此后遇到了一个奇怪的问题。
Validator::extend(
'spatial_reference',
function ($attribute, $value, $params, $validator) {
$spatialReferences = calculateSpatialReferences($value);
if (!empty($spatialReferences['latitude'])) {
request()->merge($spatialReferences);
Log::info(request()->all());/*The fields are merged here*/
return true;
}
return false;
},
'The :attribute is not in a valid format.'
);
从表单请求中执行上述操作后,一切都很好,一旦表单请求成功验证,就可以从请求中获得纬度,经度和网格参考。
但是,如果我将代码移至定制服务提供程序的引导方法,则请求合并有效,并且可以通过记录该数组来验证该数组已合并到请求,但是新字段不存在并且无法在外部访问服务提供商。
我认为这与生命周期有关,但是即使经过大量的在线研究,我也找不到原因。
我希望指针指向正确的方向。