从 Laravel Blade 中的 JSON 中选择值
Posted
技术标签:
【中文标题】从 Laravel Blade 中的 JSON 中选择值【英文标题】:Select value from JSON inside Laravel Blade 【发布时间】:2017-10-08 10:33:44 【问题描述】:我将 laravel 与刀片和 vuejs 一起使用。使用控制器作为列表,我将收到正确的响应,其中包含要显示的所有用户数据。
其中一些字段是 json 数据,我无法理解如何检索单个值。
`@foreach ($lista as $freelance)
<md-table-row>
<md-table-cell>
$freelance->regione
</md-table-cell>
</md-table-row>
@endforeach`
$freelance->regione 是一个 JSON,在页面中正确显示为:
`"text": "Veneto", "value": "Veneto"`
我的问题是,如何获取 JSON 响应的单个值而不是所有数据?最好没有循环...我知道我可以使用一个新的循环,但可能没有..
【问题讨论】:
【参考方案1】:在传递 $lista
变量之前在您的控制器中尝试此操作以查看执行此操作。
foreach($lista as list)
//we will decode the variable befoe passing it to view
$list->regione = json_decode($list->regione, true);
然后将变量传递给您的视图,例如:
return View::make('your_view_name', compact('lista'));
然后在您的刀片视图中。
`@foreach ($lista as $freelance)
<md-table-row>
<md-table-cell>
$freelance->regione['text']
</md-table-cell>
<md-table-cell>
$freelance->regione['value']
</md-table-cell>
</md-table-row>
@endforeach`
【讨论】:
看起来不错 Sapnesh...我已经按照您所说的做了,并且在列表控制器中我看到了正确的值...不幸的是 compact($lista) 向我抛出了这个错误:调用数组上的成员函数 total()... @Murphz 哦,对不起,你不需要在使用 compact 时包含$
,这是一个错字。现在更新了
那是 Sapnesh,它有效!我不得不纠正您代码中的一些错误,但也许这只是我的平台。 json_decode 结果不能应用于 $list->regione 因为它只接受字符串而不接受数组,使用临时值解决了它。之后,使用 compact('lista') 我现在可以使用 $freelance->regione 在刀片模板中检索正确的值...再次感谢先生!【参考方案2】:
laravel 刀片模板有一些功能可以直接使用。您需要对 json 字符串进行解码才能获取其中的值。
@foreach ($lista as $freelance)
<md-table-row>
<md-table-cell>
json_decode($freelance->regione)->value
</md-table-cell>
</md-table-row>
@endforeach
【讨论】:
这可能是因为循环中的某些区域 json 字符串可能不包含 value 键【参考方案3】:可以使用json_decode来解析json字符串,json解析参考this
json_decode($freelance->regione, true)['value']
【讨论】:
是的,试过了..但是刀片内部对我不起作用,在 Sapnesh 写的控制器中使用 json_decode 似乎效果很好......以上是关于从 Laravel Blade 中的 JSON 中选择值的主要内容,如果未能解决你的问题,请参考以下文章
使用 Laravel Blade 从 Postgres 显示 JSON 数据
如何在 Json Object Laravel Blade 中访问值