Ich bekomme diesen Fehler:
htmlspecialchars() expects parameter 1 to be string, object given
I'm mit in Controller:
$data = '{"pr":{"code":"1"},"ac":[[{"icon":"web","action":"link","url":"asd"}]]}'
$newData = json_decode($data);
Und ich sende es an die Ansicht als Array: 'data' => $newData Und wenn ich versuche, $data in der Ansicht zu verwenden, bekomme ich diesen Fehler
Habe schon versucht, $data->ac OR $data['ac'] zu verwenden, aber immer noch das gleiche... Etwas Hilfe, bitte?
Wenn Sie ein blade echo {{ $data }}
verwenden, wird die Ausgabe automatisch entschlüsselt. Es kann nur Zeichenketten escapen. In Ihren Daten ist $data->ac
ein Array und $data
ein Objekt, die beide nicht als Echo ausgegeben werden können. Sie müssen genauer angeben, wie die Daten ausgegeben werden sollen. Wie genau das aussieht, hängt ganz davon ab, was Sie erreichen wollen. Um zum Beispiel den Link anzuzeigen, müssten Sie {{ $data->ac[0][0]['url'] }}
machen (ich bin mir nicht sicher, warum Sie zwei verschachtelte Arrays haben, aber ich folge nur Ihrer Datenstruktur).
@foreach($data->ac['0'] as $link)
<a href="{{ $link['url'] }}">This is a link</a>
@endforeach
wenn Sie beabsichtigen, das gesamte Array von der HTML-Datei an den Controller zu senden, können Sie dies verwenden:
aus der blade.php:
<input type="hidden" name="quotation" value="{{ json_encode($quotation,TRUE)}}">
im Controller
public function Get(Request $req) {
$quotation = array('quotation' => json_decode($req->quotation));
//or
return view('quotation')->with('quotation',json_decode($req->quotation))
}
Sie könnten serialize
verwenden
<input type="hidden" name="quotation[]" value="{{serialize($quotation)}}">
Aber am besten verwenden Sie in diesem Fall die Methode "json_encode" in Ihrem Blade und "json_decode" im Controller.