2016-07-19 2 views
1

Ich habe ein model im Namen von Template und migration table im Namen templates, und ich bin mit einem column name von templatedata im mysql table, die den JSON-Array halten, holen, während Sie versuchen, holen data im view ich erhalte eine Fehlermeldung,Wie JSON-Array in Laravel

im Anschluss ist mein Controller:

public function get_template($id) 
{ 
    $gettemplate = Template::findOrFail($id); 
    return view('nitseditor.theme', ['gettemplate' => $gettemplate]); 
} 

ich versuche, das Objekt wie folgt zu holen:

@foreach($gettemplate as $template) 
    <div class="branding"> 
     <h1 class="logo"> 
      <a href="index.html"><img src="{{ URL::asset($template->templatedata.content.logoimage) }}" alt="" width="25" height="26">NitsEditor</a> 
     </h1> 
    </div> 
@endforeach 

und finden meine JSON format in der Tabelle:

[{ 
    "content": { 
      "logo": { 
        "logoimage": "img/home/nitseditorlogo.png", 
        "logolink": "index.html" 
        }, 
       "pages": [ 
        {"pagename": "Mysite", "pagelink": "index.html"}, 
        {"pagename": "Templates", "pagelink": "templates.html"}, 
        {"pagename": "About Us", "pagelink": "aboutus.html"}, 
        {"pagename": "Contact Us", "pagelink": "contactus.html"} 
         ] 
       } 
}] 

ich folgende Störung zu erhalten:

Trying to get property of non-object (View: location of blade)

+0

Warum loopen Sie "$ gettemplate", wenn es nur 1 Datensatz ist, wenn Sie es mit 'findOrFail ($ id)' holen? – TheFallen

+0

@TheFallen Ich habe es für 'Seitenname' und' Pagelink' gemacht, ich meine, dafür muss ich eine Schleife machen. –

+0

Mein Punkt ist, dass, wenn Sie '$ gettemplate' loopen, was ein einzelner Datensatz ist, Sie die Eigenschaften des * Template * -Objekts durchlaufen werden, die keine Objekte sind, und deshalb erhalten Sie einen Fehler. – TheFallen

Antwort

3

Versuchen Sie, diese bro

$data_string = '[{ 
    "content": { 
      "logo": { 
        "logoimage": "img/home/nitseditorlogo.png", 
        "logolink": "index.html" 
        }, 
      "pages": [ 
       {"pagename": "Mysite", "pagelink": "index.html"}, 
       {"pagename": "Templates", "pagelink": "templates.html"}, 
       {"pagename": "About Us", "pagelink": "aboutus.html"}, 
       {"pagename": "Contact Us", "pagelink": "contactus.html"} 
       ] 
      } 
}]'; 
$template = json_decode($data_string); 
echo $template[0]->content->logo->logoimage.'<br>'; 
echo $template[0]->content->pages[0]->pagename; 

Ergebnis

img/home/nitseditorlogo.png 
Mysite 
+0

Danke für das Update bei der Rückgabe von $ template Ich bekomme den JSON, aber sobald ich $ template-> content mache, bekomme ich den gleichen Fehler. –

+0

@NitishKumar Es ist jetzt gelöst? xD Es ist ein guter Sound. –

+0

Ich bekomme den JSON-Return mit dem Inhalt in der großen Klammer '[{}]', dein 'JSON'-Inhalt befindet sich in' {} ', wo immer ich das Beispiel für den Inhalt' [{}] 'we gesehen habe muss ein Array platzieren, zum Beispiel in der obigen Antwort, die Sie 'pages [0]' genommen haben, habe ich versucht, durch 'template [0] -> content' zu rufen, wie Sie in meiner Frage sehen können, dass die' JSON' Inhalte drin sind '[]' jetzt bekomme ich den Fehler 'Der Response-Inhalt muss eine Zeichenkette oder ein Objekt sein, die __toString()," object "übergeben. –