laravel - 使用 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' => '[]'
解决方案
您可以先将 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
}
推荐阅读
- apache-kafka - 正确地 seekToBeginning() 组中的所有消费者
- azure - 使用 az-cli 查询未按预期执行
- c# - C# 无法处理文件 xxx.resx,因为它位于 Internet 或受限区域或文件上有 web 标记
- php - ImageMagick 不适用于 IIS 8.5 和 PHP 7.1
- pandas - 如何散布图,其中 X 轴是连续的,Y 轴是分类的,1 和 0 有 2 种不同的颜色?
- mysql - 将mysql数据库中的一列拆分为两列
- php - 如何在 PHP 中使用谷歌广告词 API 创建产品组
- android - Retrofit2 不能调用 onResponse 和 onFailure?
- javascript - QZ托盘生印刷
- react-native - React Native:在 react-native-maps 中设置 UserLocation 样式