2016-08-13 9 views
0

Controller:Schleife durch JSON-Array in PHP Laravel

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

use App\Http\Requests; 

class welcomeController extends Controller 
{ 
    public function welcome() { 
     $cards = json_decode('[{ 
      "id": 1, 
      "name ": "a", 
      "class": "class1" 
     }, { 
      "id": 2, 
      "name ": "b", 
      "class": "class2" 
     }]'); 

     return view('welcome', compact('cards')); 
    } 
} 

welcome.blade.php

@foreach($cards as $card) 
    <p>{{ $card->name }} </p> 
    <p>{{ $card->class }} </p> 
@endforeach 

Fehlermeldung auf Browser enter image description here

Ich bin Neu bei PHP Larav el. Bitte helfen Sie mir, die richtige Lösung dafür zu finden. Danke.

Antwort

1

Hallo Sie haben alles in Ordnung in Ihrem Code Das Problem ist in der json Variable $ Karten = json_decode ('[{ "id": 1, „name ": "a", "Klasse":" Klasse 1 " }, { " ID ": 2, " Name ":" b ", " Klasse ":" Klasse2 " }] ');

der Schlüssel „name“ hat etwas Platz im Inneren, so im Hinblick auf die Sie zugreifen als „name“ sind Tring, deshalb der Fehler

+0

Große Beobachtung, vielen Dank. Das hat funktioniert. – Kartik

0

Von Ihrem Screenshot ist der Wert der Karte, die an die Vorlage gesendet wird, ein Array von Arrays und nicht ein Array von Objekten, die Ihr Code-Snippet erzeugen würde.

Das zweite Argument zu json_decode() ist, ob in ein assoziatives Array konvertieren oder nicht, standardmäßig nicht.

+0

kommt habe ich versucht, auch 'true' als zweites Argument an' json_decode() ' . Aber geht nicht so wie ich es will. – Kartik

+0

Aus den Augen der Dinge, der Screenshot war, als Sie in true übergeben, und der Code ist ohne. Von dem, was ich sagen kann, sollte der Code wie in der Beschreibung beschrieben funktionieren! – jedifans

1

versuchen mit

return view('welcome')->with("cards",$cards); 
+0

Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – FrankerZ

+0

ohk ich werde remmeber es und Dank für die Beratung @FrankerZ –

0

Der Fehler passiert, weil Ihr json Array mehrdimensional ist, und Ihre welcome.blade.php wird die Variablen des Namens und der Klasse aufrufen, die auf dieser Ebene des Arrays existieren nicht .

In Ihrem welcome.blade.php, ändern Sie Ihre foreach zu sagen:

glauben
@foreach($cards[0] as $card) 
    <p>{{ $card->name }} </p> 
    <p>{{ $card->class }} </p> 
@endforeach 

ich, dass sollten Sie wieder auf die Strecke. Ich hoffe, das hilft!

+0

Als ich '@foreach ($ Karten wie $-Karte) verwenden

{{$ karten-> id}}

@ endforeach' Es gibt mir unten genanntes Ergebnis: '1 2' Das bedeutet also, dass es zweimal durchläuft, aber nicht die Werte bekommt. – Kartik