首页 > 解决方案 > Laravel 处理复杂请求

问题描述

我有一个将 FormData 发送到我的 API 的请求。

它具有以下结构:

image: file type image;
text: 'some long string';
array: ['string', 'string'];
data: [
  { field: 'string', link: 'url' },
  { field: 'string', link: 'url' },
]

我成功处理了前三个输入,但坚持使用最后一个。

Laravel 以字符串数组而不是对象数组的形式接收它。

我既不能通过$request->data->field也不能通过$request->data['field'}

我也尝试使用json_decode,但这会返回null

更新#1

array(4) {
  ["text"]=>
  string(17) "asdajsklfsdnfnads"
  ["array"]=>
  array(2) {
    [0]=>
    string(6) "sadasd"
    [1]=>
    string(6) "safsdf"
  }
  ["data"]=>
  array(2) {
    [0]=>
    string(39) "{link: "http://sdf.sdf", field: "asfd"}"
    [1]=>
    string(44) "{link: "http://sdf.sasdf", field: "asasdfd"}"
  }
  ["image"]=>
  object(Illuminate\Http\UploadedFile)#787 (7) {

标签: phplaraveldingo-api

解决方案


试试这个代码

$result = [];
foreach($request->data as $data) {
   $object = json_decode($data);
   $result[] = $object;
   // $object['filed'] you can access in field attribute 
}

dd($result);

推荐阅读