首页 > 解决方案 > 使用 JSON.stringify 传递单个数据时进行验证

问题描述

在将数据传递给控制器​​之前,正在添加数据:

formData.push({"name":"channels","value":JSON.stringify(channels)});

即使没有数据存在,它也会像 'channels' => '[]' 一样传递

现在的问题是当我尝试在验证器中验证它时,我不能使用 'channels' =>'required', 'channels.*' =>'required|exists:channels,id',

如何验证上述数据?不想将格式转换为其工作系统。任何建议表示赞赏。谢谢。

更新请求所有参数: '_token' => 'DjqgmNab0o3ifrVrSvHh6dM5vxLP7tZDc47pq05r', 'startdate' => '05 Sep 2018', 'years' => NULL, 'months' => NULL, 'enddate' => NULL, 'addChannel' => NULL, 'offerRuns' => 'UL', 'numberOfRuns' => NULL, 'limitPeriod' => 'FP', 'licenseAudioTrack' => '1', 'amount' => NULL, 'include_materials_costs' => '1', 'include_withholding_taxes' => '1', 'paymentTermsType' => 'US', 'termsAndConditionDescription' => NULL, 'document_s3_url' => NULL, 'file' => NULL, 'fileSize' => NULL, 'materialSpecificationDescription' => NULL, 'note' => NULL, 'countries' => '[]', 'platforms' => '["1","2","3","4","5","6","7","8","9"]', 'platforms-exclusive' => '[]', 'platforms-non-exclusive' => '[]', 'platforms-holdback' => '[]', 'channels' => '[]', 'languages' => '[["56","AL",1,"seller"]]', 'currencySelectedTerm' => 'EP', 'currencyId' => '1', 'paymentTerms' => '[]'

标签: laravel

解决方案


您可以先将 json_decode 用于数据,然后再应用验证

public function store(Request $request)
{
    $request_data = $request->all();

    foreach($request_data as $key=>$value)
    {
        $request_data[$key] = json_decode($value);
    }

    // And then pass data in validator rules

    $rules = [
       // All rules here
    ];

    $validator = Validator::make($request_data, $rules);
    // other code
}

推荐阅读