Laravel:如何在视图 blade 中解析此 json 数据?
Laravel: How do I parse this json data in view blade?
目前这是我的观点
{{ $leads }}
这是输出
{"error":false,"member":[{"id":"1","firstName":"first","lastName":"last","phoneNumber":"0987654321","email":"email@yahoo.com","owner":{
"id":"10","firstName":"first","lastName":"last"}}]}
我想展示这样的东西
Member ID: 1
Firstname: First
Lastname: Last
Phone: 0987654321
Owner ID: 10
Firstname: First
Lastname: Last
在控制器中只需使用 json_decode php 函数将 json 数据转换为 object
$member = json_decode($json_string);
and pass to view in view
return view('page',compact('$member'))
可见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}}
这很容易。
首先发送到视图解码变量(见Laravel Views):
view('your-view')->with('leads', json_decode($leads, true));
然后只需使用常见的 blade 结构(参见 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
您可以使用 json 解码然后得到 php 数组,并按照您自己的方式使用该值
<?php
$leads = json_decode($leads, true);
dd($leads);
对我来说,最重要的是获取一个 object,对其进行编码,然后将字符串传递到 javascript script
标记中。为此,您必须进行一些替换。
首先将每个 \
替换为双斜杠 \
,然后将每个引号 "
替换为 \"
。
$payload = json_encode($payload);
$payload = preg_replace("_\\_", "\\\", $payload);
$payload = preg_replace("/\"/", "\\"", $payload);
return View::make('pages.javascript')
->with('payload', $payload)
然后在blade模板中
@if(isset($payload))
<script>
window.__payload = JSON.parse("{!!$payload!!}");
</script>
@endif
这基本上允许您在 php 侧取一个 object,然后在 javascript 侧取一个 object。
只需删除 $ 到压缩方法中,
return 视图('page',紧凑('member'))
如果您的数据来自模型,您可以执行以下操作:
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
看来你可以使用@json($leads) 因为laravel 5.5
对于这种情况,你可以这样做
@foreach (json_decode($leads->member) as $member)
{{ $genre }}
@endforeach
示例,如果你有这样的数组格式:
$member = [
[ "firs_name" => "Monica",
"last_name" => "Dev",
"sex" => "F"
],
[ "firs_name" => "Blake",
"last_name" => "Devante",
"sex" => "M"
],
[ "firs_name" => "Johnny",
"last_name" => "Merritt",
"sex" => "M"
]
]
您可以使用 @json
Blade 指令 Laravel 5.5 到 9.x
<script>
var app = @json($member);
</script>
从 Laravel 8.x
到最新版本,您可以使用 Illuminate\Support\Js::from
方法指令。
<script>
var app = {{ Illuminate\Support\Js::from($member) }};
</script>
并简称为Js
门面
<script>
var app = {{ Js::from($array) }};
</script>
参考:
目前这是我的观点
{{ $leads }}
这是输出
{"error":false,"member":[{"id":"1","firstName":"first","lastName":"last","phoneNumber":"0987654321","email":"email@yahoo.com","owner":{
"id":"10","firstName":"first","lastName":"last"}}]}
我想展示这样的东西
Member ID: 1
Firstname: First
Lastname: Last
Phone: 0987654321
Owner ID: 10
Firstname: First
Lastname: Last
在控制器中只需使用 json_decode php 函数将 json 数据转换为 object
$member = json_decode($json_string);
and pass to view in view
return view('page',compact('$member'))
可见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}}
这很容易。 首先发送到视图解码变量(见Laravel Views):
view('your-view')->with('leads', json_decode($leads, true));
然后只需使用常见的 blade 结构(参见 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
您可以使用 json 解码然后得到 php 数组,并按照您自己的方式使用该值
<?php
$leads = json_decode($leads, true);
dd($leads);
对我来说,最重要的是获取一个 object,对其进行编码,然后将字符串传递到 javascript script
标记中。为此,您必须进行一些替换。
首先将每个 \
替换为双斜杠 \
,然后将每个引号 "
替换为 \"
。
$payload = json_encode($payload);
$payload = preg_replace("_\\_", "\\\", $payload);
$payload = preg_replace("/\"/", "\\"", $payload);
return View::make('pages.javascript')
->with('payload', $payload)
然后在blade模板中
@if(isset($payload))
<script>
window.__payload = JSON.parse("{!!$payload!!}");
</script>
@endif
这基本上允许您在 php 侧取一个 object,然后在 javascript 侧取一个 object。
只需删除 $ 到压缩方法中,
return 视图('page',紧凑('member'))
如果您的数据来自模型,您可以执行以下操作:
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
看来你可以使用@json($leads) 因为laravel 5.5
对于这种情况,你可以这样做
@foreach (json_decode($leads->member) as $member)
{{ $genre }}
@endforeach
示例,如果你有这样的数组格式:
$member = [
[ "firs_name" => "Monica",
"last_name" => "Dev",
"sex" => "F"
],
[ "firs_name" => "Blake",
"last_name" => "Devante",
"sex" => "M"
],
[ "firs_name" => "Johnny",
"last_name" => "Merritt",
"sex" => "M"
]
]
您可以使用 @json
Blade 指令 Laravel 5.5 到 9.x
<script>
var app = @json($member);
</script>
从 Laravel 8.x
到最新版本,您可以使用 Illuminate\Support\Js::from
方法指令。
<script>
var app = {{ Illuminate\Support\Js::from($member) }};
</script>
并简称为Js
门面
<script>
var app = {{ Js::from($array) }};
</script>
参考: