首页 > 解决方案 > 在服务提供者中合并到请求的参数在服务提供者之外丢失 - Laravel 5.6

问题描述

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

当从表单请求运行上述内容时,一切都很好,一旦表单请求成功验证,纬度、经度和网格参考就可以从请求中获得。

但是,如果我将代码移动到自定义服务提供程序的引导方法,请求合并工作,我可以通过记录它来验证数组是否合并到请求,但是新字段不存在并且无法在服务之外访问提供者。

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

我很感激一个指向正确方向的指针。

标签: phplaravellaravel-validationservice-provider

解决方案


推荐阅读