2017-02-15 3 views
2

ich ein Formular mit drei Seiten habe und jede Seite hat unterschiedliche Felder in meinem Controller ich in der Lage bin, um Daten im JSON-Format zu machen, das ist wieOrt Formulardaten im mehrfachen Array und speichern im JSON-Format

Controller-Code

$input = $request->all(); 
     unset($input['_token']); 
     unset($input['submit']); 
     $form_attributes = json_encode($input); 
     dd($form_attributes); 

Ausgang als

"{"name":"test","student":"yes","email":"[email protected]","format":"auto", 
"lists":["1,2"],"class_lists":["2,5"],"status":"1"}" 

Ich zeige nicht die volle Form, so dass es leicht mit kleinen Daten

Ich möchte dafür oben löschte als

seine Array als ein Hauptarray Schüler dann page1 Array page2 Array speichern sollte zu verstehen und dann page3 Array

es sein sollte als

"Student":[{"arraypage1":[{"name":"test","student":"yes","email":"[email protected]"}], 
    "arraypage2":[{"format":"auto","lists":["1,2"]}], 
    "arraypage3":[{"class_lists":["2,5"],"status":"1"}]]" 

Bitte mir helfen, diese Daten in oben Format zu kodieren Dank

+0

Welche Version von Laravel verwenden Sie? –

+0

Laravel Version 5.3 –

+0

Gerade FYI, aber Sie können außer '$ Anfrage-> do ('_ token', 'submit')' anstelle von 'unset()' –

Antwort

1

Sie können ein assoziatives Array in das gewünschte Format leicht aufbauen, dann json_encode() es:

$formattedOutput = Array(
    'student' => Array(
     'arraypage1' => Array(
      'name' => $input['name'], 
      'student' => $input['student'], 
      'email' => $input['email'] 
     ), 
     'arraypage2' => Array(
      'format' => $input['format'], 
      'lists' => $input['lists'] 
     ), 
     'arraypage3' => Array(
      'class_lists' => $input['class_lists'], 
      'status' => $input['status'] 
     ) 
    ) 
); 

$form_attributes = json_encode($formattedOutput); 

Die genauen Schlüsselnamen unterscheiden können, aber Sie sollten die Idee.

UPDATE: Um die eckigen Klammern erhalten Sie mit zusätzlichen Array() wickeln kann:

$formattedOutput = Array(
    'student' => Array(
     Array('arraypage1' => 
      Array(
       Array(
        'name' => $input['name'], 
        'student' => $input['student'], 
        'email' => $input['email'] 
       ) 
      ) 
     ), 
     Array('arraypage2' => 
      Array(
       Array(
        'format' => $input['format'], 
        'lists' => $input['lists'] 
       ) 
      ) 
     ), 
     Array('arraypage3' => 
      Array(
       Array(
        'class_lists' => $input['class_lists'], 
        'status' => $input['status'] 
       ) 
      ) 
     ) 
    ) 
); 

diesen Beitrag sehen für weitere Informationen: no square bracket json array

+0

Sir sein Aussehen in Ordnung, aber warum eckigen Klammern [] –

+0

verpassten Ich teste für 2 Arrays als '" {"student": {"arraypage1": {"form_name": "test", "double_optin": "ein"}, "arraypage2": {"thanks_email": "on", "email": "dfsd"}}} "aber es sollte wie' "{" student "sein: [{" arraypage1 ": [{" form_name ":" test "," double_optin ":" on "}], "arraypage2": [{"thanks_email": "on", "email": "dfsd"}]}]} '' –

+0

Um die eckigen Klammern zu erhalten, müssen Sie ein weiteres 'Array()' einfügen. Ich werde die Antwort aktualisieren. – BizzyBob

Verwandte Themen