Как проверить JSON Ввод с использованием запросов? Laravel - PullRequest
0 голосов
/ 28 февраля 2020

Я отправляю некоторые данные с помощью formData, и для одного поля (объекта) я использую: JSON.stringify(this.allValues). и я пытаюсь проверить все значения от this.allValues. До сих пор я пробовал 2 способа из здесь , теперь я пытаюсь со вторым с "JsonApiMiddleware". Но при этом я проверяю (требуется) ошибки, даже если поля не равны нулю.

public function rules()
    {
        $newValues = json_decode(request()->get('all_values')); // Here I have all values that needs to be validated
        dd($newValues); // I post the respons for this below
        $newValues = [
               'saleforce_id'                    => 'required',
               'customer_id'                     => 'required',
        ]

        return $newValues;
}

"" customer_id ": 49," saleforce_id ":" "," lkp_invoicing_method_id ": 3, "lkp_product_category_id": 10, "lkp_notice_period_id": 5, "lkp_licence_term_id": 9, "is_attrition_risk": ложно, "is_additional_users": ложно, "contract_value_exc_vat_annual": 101090 и ... 10075 ...

Ответы [ 2 ]

0 голосов
/ 28 февраля 2020

Я нашел решение. Я использую метод из laracast , fureszpeter, метод с промежуточным программным обеспечением и редактирую его.

public function handle($request, Closure $next)
    {
        if ($request->has('all_values')) {
            $request->merge([
                'all_values' => json_decode($request->get('all_values'), true)
            ]);
        }  // only when I have all_values in my request

        return $next($request);
    }
}

В моем существующем запросе:

public function rules()
{
    $newValues = [
               'all_values.saleforce_id'         => 'required'
               'all_values.customer_id'          => 'required',
               // and the rest of the files
    ]

    return $newValues
}
0 голосов
/ 28 февраля 2020

Обрабатывать отправляемый вами объект JSON как php ассоциативный массив. Например, скажем, ваши отправленные данные выглядят следующим образом.

/* var allValues = */
{
    data: {
        requiredField1: value,
        requiredField2: value,
        requiredArrayField1: [
            1,
            2,
            3,
        ],
        optionalField1: value
    }
}

Затем вы можете проверить данные следующим образом:

public function rules()
{
    return: [
        'data' => 'required|array',
        'data.requiredField1' => 'required',
        'data.requiredField2' => 'required',
        'data.requiredArrayField1' => 'required|array',
        'data.requiredArrayField1.*' => 'required|numeric',
        'data.optionalField1' => 'nullable',
    ];
}
...