合并到服务提供商中的请求的参数在服务提供商之外丢失-Laravel 5.6

时间:2018-07-26 14:55:24

标签: php laravel laravel-validation service-provider

我在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.'
  );

从表单请求中执行上述操作后,一切都很好,一旦表单请求成功验证,就可以从请求中获得纬度,经度和网格参考。

但是,如果我将代码移至定制服务提供程序的引导方法,则请求合并有效,并且可以通过记录该数组来验证该数组已合并到请求,但是新字段不存在并且无法在外部访问服务提供商。

我认为这与生命周期有关,但是即使经过大量的在线研究,我也找不到原因。

我希望指针指向正确的方向。

0 个答案:

没有答案