Laravel:如何在视图刀片中解析此 json 数据?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/30073065/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Laravel: How do I parse this json data in view blade?
提问by David Alrdrin
Currently this is my view
目前这是我的观点
{{ $leads }}
And this is the output
这是输出
{"error":false,"member":[{"id":"1","firstName":"first","lastName":"last","phoneNumber":"0987654321","email":"[email protected]","owner":{
"id":"10","firstName":"first","lastName":"last"}}]}
I wanted to display something like this
我想显示这样的东西
Member ID: 1
Firstname: First
Lastname: Last
Phone: 0987654321
Owner ID: 10
Firstname: First
Lastname: Last
回答by Maxim Lanin
It's pretty easy. First of all send to the view decoded variable (see Laravel Views):
这很容易。首先发送到视图解码变量(参见Laravel 视图):
view('your-view')->with('leads', json_decode($leads, true));
Then just use common blade constructions (see Laravel Templating):
然后只需使用常见的刀片结构(请参阅Laravel 模板):
@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
回答by mygeea
it seems you can use @json($leads) since laravel 5.5
从 laravel 5.5 开始,您似乎可以使用 @json($leads)
回答by Imtiaz Pabel
You can use json decode then you get php array,and use that value as your own way
您可以使用 json decode 然后获得 php 数组,并将该值用作您自己的方式
<?php
$leads = json_decode($leads, true);
dd($leads);
回答by Funkodebat
The catch all for me is taking an object, encoding it, and then passing the string into a javascript scripttag. To do this you have to do some replacements.
对我来说最重要的是获取一个对象,对其进行编码,然后将字符串传递到 javascriptscript标记中。为此,您必须进行一些替换。
First replace every \with a double slash \\and then every quote"with a \".
首先用\双斜杠替换每个,\\然后"用\".
$payload = json_encode($payload);
$payload = preg_replace("_\\_", "\\\", $payload);
$payload = preg_replace("/\"/", "\\"", $payload);
return View::make('pages.javascript')
->with('payload', $payload)
Then in the blade template
然后在刀片模板中
@if(isset($payload))
<script>
window.__payload = JSON.parse("{!!$payload!!}");
</script>
@endif
This basically allows you to take an object on the php side, and then have an object on the javascript side.
这基本上允许您在 php 端获取一个对象,然后在 javascript 端获取一个对象。
回答by umefarooq
in controller just convert json data to object using json_decode php function like this
在控制器中,只需使用这样的 json_decode php 函数将 json 数据转换为对象
$member = json_decode($json_string);
and pass to view in view
return view('page',compact('$member'))
in view blade
在视图刀片
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}}
回答by Bijaya Kumar Oli
For such case, you can do like this
对于这种情况,你可以这样做
@foreach (json_decode($leads->member) as $member)
{{ $genre }}
@endforeach
回答by Ahmed Mansour
Just Remove $in to compact method ,
return view('page',compact('member'))
只需将$in移除到 compact 方法,
返回 view('page',compact('member'))
回答by Gus
If your data is coming from a model you can do:
如果您的数据来自模型,您可以执行以下操作:
App\Http\Controller\SomeController
应用\Http\Controller\SomeController
public function index(MyModel $model)
{
return view('index', [
'data' => $model->all()->toJson(),
]);
}
index.blade.php
index.blade.php
@push('footer-scripts')
<script>
(function(global){
var data = {!! $data !!};
console.log(data);
// [{..}]
})(window);
</script>
@endpush

