首页 > 解决方案 > json 编码并附加到当前表单提交请求 laravel

问题描述

我正在使用laravel。我有一个包含许多输入字段的表单,例如名字、姓氏、地址等。

我想以 json 格式存储地址数据,因为地址可以有地址 1、adderss2、city 等,所以我想存储为 json

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

}

它在 dd($data) 上给出以下结果;

array:5 [▼
  "_token" => "GEBkMtY6Plwt7OMYCH41QRh7S29XdgEniExNm4z6"
  "field_855" => "john"
  "field_856" => "doe"
  "fields" => array:2 [▼
    "field_857" => array:6 [▼
      "add1" => "Avenida Eva Perón"
      "add" => "aa"
      "c" => "CJN"
      "state" => "NW"
      "p" => "23"
      "country" => "CDE"
    ]
    "field_858" => array:6 [▼
      "addressone" => "PO Box 23"
      "address2" => "dd"
      "city" => "NEWCASTLE UNIVERSITY"
      "state" => "NSW"
      "postcode" => "223"
      "country" => "ABC"
    ]
  ]
]

我想将 $request->fields 的数据转换为 json,就像"field_857"=>[{'add1':aAvenida Eva Perón',add:'aa',c:'CJN','state':'NWW','postcode':'233','country':'ABC'}] 字段 field_858 一样。

所以我想要的最终数组是这样的:

dd($data);


array:9 [▼
  "_token" => "GEBkMtY6Plwt7OMYCH41QRh7S29XdgEniExNm4z6"
  "form_secret_token" => "T5yb8UZqIh8znSKbgTI32kNaAjsKlk4G"
  "itoken" => "Ju4qFduCNk"
  "field_855" => "john"
  "field_856" => "doe"
  "address" => "PO Box 23, NEWCASTLE UNIVERSITY NSW 2308"
  "fields" => array:2 [▶]
  "field_857" => "[{'add1':aAvenida Eva Perón',add:'aa',c:'CJN','state':'NWW','postcode':'233','country':'ABC'}]`"
  "field_858" => "[{'addressone':PO Box 23',address2:'dd',city:'NEWCASTLE UNIVERSITY','state':'NWW','postcode':'233','country':'ABC'}]`
]

我使用 array_keys() 和 array_values() 来获取 $request->field 的键和值并分配给 $data,我得到错误:非法偏移类型

标签: phplaravel

解决方案


嗨,您可以将字段转换为 json 并将其推送到您的集合中:


$data = $request->all();

    $result = json_encode($data->fields);
    $result = json_decode($result);
    // return $result;
    foreach($result as $key=>$r){
        $newField = [
            $key => $r
        ];
        $data[$key] = $r;
    }
    // dd($request['field_857']->add1);
    // dd($request->field_857->add1);
    dd($data);


推荐阅读