验证前修改请求响应,Laravel

Modify request response before validation, Laravel

我从响应中得到一个 formData,我将其更改为中间件以在验证时使用它,问题是我必须进行另一次修改以在不使用 '[= 的情况下验证数组中的所有元素19=]数组.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

FormRequests 您可以使用 prepareForValidation()

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