Laravel: Come analizzo questi dati json in view blade?

Attualmente questa è la mia opinione

{{ $leads }} 

E questo è l’output

 {"error":false,"member":[{"id":"1","firstName":"first","lastName":"last","phoneNumber":"0987654321","email":"[email protected]","owner":{ "id":"10","firstName":"first","lastName":"last"}}]} 

Volevo mostrare qualcosa di simile

 Member ID: 1 Firstname: First Lastname: Last Phone: 0987654321 Owner ID: 10 Firstname: First Lastname: Last 

È abbastanza facile Prima di tutto invia alla variabile decodificata vista (vedi Viste Laravel ):

 view('your-view')->with('leads', json_decode($leads, true)); 

Quindi usa solo costruzioni a lama comune (vedi Laravel Templating) :

 @foreach($leads['member'] as $member) Member ID: {{ $member['id'] }} Firstname: {{ $member['firstName'] }} Lastname: {{ $member['lastName'] }} Phone: {{ $member['phoneNumber'] }} Owner ID: {{ $member['owner']['id'] }} Firstname: {{ $member['owner']['firstName'] }} Lastname: {{ $member['owner']['lastName'] }} @endforeach 

È ansible utilizzare la decodifica di JSON, quindi ottenere array php e utilizzare tale valore come a modo proprio

  

in controller basta convertire i dati json in object usando la funzione php json_decode come questa

 $member = json_decode($json_string); and pass to view in view return view('page',compact('$member')) 

in vista lama

 Member ID: {{$member->member[0]->id}} Firstname: {{$member->member[0]->firstname}} Lastname: {{$member->member[0]->lastname}} Phone: {{$member->member[0]->phone}} Owner ID: {{$member->owner[0]->id}} Firstname: {{$member->owner[0]->firstname}} Lastname: {{$member->owner[0]->lastname}} 

L’elemento che cattura tutto per me è prendere un object, codificarlo e quindi passare la stringa in un tag script javascript. Per fare questo devi fare delle sostituzioni.

Prima sostituisci ogni \ con una doppia barra \\ e poi ogni citazione " con a \" .

 $payload = json_encode($payload); $payload = preg_replace("_\\\_", "\\\\\\", $payload); $payload = preg_replace("/\"/", "\\\"", $payload); return View::make('pages.javascript') ->with('payload', $payload) 

Quindi nel modello di lama

 @if(isset($payload))  @endif 

Questo in pratica ti permette di prendere un object dal lato php e poi avere un object sul lato javascript.

Basta rimuovere $ in per compattare il metodo,
return view (‘page’, compact (‘member’))

Se i tuoi dati provengono da un modello puoi fare:

App \ Http \ Controller \ SomeController

 public function index(MyModel $model) { return view('index', [ 'data' => $model->all()->toJson(), ]); } 

index.blade.php

 @push('footer-scripts')  @endpush 

sembra che tu possa usare @json ($ leads) da laravel 5.5

https://laravel.com/docs/5.5/blade