Actuellement c'est mon avis
{{ $leads }}
Et c'est la sortie
{"error":false,"member":[{"id":"1","firstName":"first","lastName":"last","phoneNumber":"0987654321","email":"[email protected]","owner":{
"id":"10","firstName":"first","lastName":"last"}}]}
Je voulais afficher quelque chose comme ça
Member ID: 1
Firstname: First
Lastname: Last
Phone: 0987654321
Owner ID: 10
Firstname: First
Lastname: Last
C'est assez facile. Tout d’abord envoyer à la vue variable décodée (voir Laravel Views ):
view('your-view')->with('leads', json_decode($leads, true));
Ensuite, utilisez simplement les constructions de lames courantes (voir 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
Vous pouvez utiliser json decode pour obtenir un tableau php, et utiliser cette valeur comme bon vous semble
<?php
$leads = json_decode($leads, true);
dd($leads);
dans le contrôleur vient de convertir les données JSON en objet à l'aide de la fonction php json_decode comme ceci
$member = json_decode($json_string);
and pass to view in view
return view('page',compact('$member'))
en vue lame
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}}
Pour moi, le seul problème est de prendre un objet, de le coder, puis de passer la chaîne à une balise javascript script
. Pour ce faire, vous devez effectuer des remplacements.
Commencez par remplacer chaque \
par une double barre oblique \\
, puis chaque quote"
par un \"
.
$payload = json_encode($payload);
$payload = preg_replace("_\\\_", "\\\\\\", $payload);
$payload = preg_replace("/\"/", "\\\"", $payload);
return View::make('pages.javascript')
->with('payload', $payload)
Puis dans le gabarit de la lame
@if(isset($payload))
<script>
window.__payload = JSON.parse("{!!$payload!!}");
</script>
@endif
Cela vous permet essentiellement de prendre un objet du côté php, puis d'avoir un objet du côté javascript.
il semble que vous puissiez utiliser @json ($ leads) depuis Laravel 5.5
Pour un tel cas, vous pouvez faire comme ça
@foreach (json_decode($leads->member) as $member)
{{ $genre }}
@endforeach
Il suffit de supprimer $ dans la méthode compacte,
retourne la vue ('page', compact ('membre'))
Si vos données proviennent d'un modèle, vous pouvez faire:
App\Http\Controller\SomeController
public function index(MyModel $model)
{
return view('index', [
'data' => $model->all()->toJson(),
]);
}
index.blade.php
@Push('footer-scripts')
<script>
(function(global){
var data = {!! $data !!};
console.log(data);
// [{..}]
})(window);
</script>
@endpush