【问题标题】:Modify request response before validation, Laravel在验证之前修改请求响应,Laravel
【发布时间】:2020-03-05 09:39:43
【问题描述】:

我从响应中得到一个 formData,我将其更改为中间件以在验证时使用它,问题是我必须进行另一次修改以验证数组中的所有元素而不使用 'array em>.oneElement'。

来自中间件的代码

public function handle($request, Closure $next)
{
    if ($request->has('all_values')) {
        $request->merge([
            'all_values' => json_decode($request->get('all_values'), true)
        ]);
    }

    return $next($request);
}

// 来自请求

public function rules()
{
    $validations = [
        'all_values.saleforce_id'                    => 'required',
        'all_values.customer_id'                     => 'required',
        'all_values.lkp_product_category_id'         => 'required',
    ]
    // I need to access this all_values before validations

    if (request()->has('validation_field')) {
            return [request()->validation_field => $validations[ request()->validation_field ]];
        } // this is used for a validation , to do validation onChange

    return $validations;
}


  $request = $request->all()['all_values']; // I need something like this, but this doesn't work

【问题讨论】:

  • 不需要控制器,对于请求,首先访问请求资源然后访问控制器,我需要在此之前修改请求,在中间件或请求资源中

标签: laravel laravel-6


【解决方案1】:

FormRequests 上,您可以使用prepareForValidation()

protected function prepareForValidation()
{
    $this->merge([
        'all_values' => json_decode($request->get('all_values'), true),
    ]);
}

【讨论】:

  • 实际上适用于我的验证方法,但在提交时我得到错误验证,就像我没有字段一样。
  • 验证方法和提交有什么区别?
猜你喜欢
  • 1970-01-01
  • 2016-05-16
  • 2017-07-19
  • 1970-01-01
  • 2017-02-23
  • 2015-07-12
  • 2015-10-29
  • 2016-06-04
  • 1970-01-01
相关资源
最近更新 更多