呈现集合抛出“htmlspecialchars() 期望”我如何像 Eloquent 集合一样重新编辑它 [关闭]
Posted
技术标签:
【中文标题】呈现集合抛出“htmlspecialchars() 期望”我如何像 Eloquent 集合一样重新编辑它 [关闭]【英文标题】:rendering a collection throws "htmlspecialchars() expects" how can I reder it like a Eloquent collection [closed] 【发布时间】:2021-07-01 14:44:27 【问题描述】:我调用一个 API 并将响应放入一个集合中(认为这是一个好主意),以便像在刀片中带有一个 foreach 的雄辩的集合一样重新处理它
我的特点:
class AzureRest
public static function getSubscription($subscriptionId)
$token = TokenCache::getRestApiToken();
$url = "https://management.azure.com/subscriptions/".$subscriptionId."?api-version=2020-01-01";
$json = Http::withToken($token)->get($url);
return collect(json_decode($json, true, 5))->all();
我的 livewire 控制器
class ShowSubscriptions extends Component
public $subscriptionId;
public function mount()
$this->subscriptionId;
public function render()
return view('livewire.azure.show-subscriptions',
[
'details' => AzureRest::getSubscription($this->subscriptionId)
]);
我的刀
<div>
@foreach($details as $detail)
<p>$detail->foo</p>
<p>$detail->bar</p>
<p>$detail->baz</p>
@endforeach
</div>
这就是集合的样子:
【问题讨论】:
【参考方案1】:当您在集合中调用all()
方法时,它会返回底层数组。
例如
collect([1, 2, 3])->all();
// [1, 2, 3] <--- returned
因此,当您尝试执行$detail->foo
时,它会返回错误,因为它实际上应该是$detail['foo']
,因为它在执行->all()
之后作为数组返回。
所以尝试删除all()
,它应该可以工作。
【讨论】:
我以前试过这个,但得到Property [id] does not exist on this collection instance
,因为我无法访问这些项目【参考方案2】:
我还是多睡点吧,我终于明白了:
我删除了 trait 上的集合
- return collect(json_decode($json, true, 5))->all();
+ return json_decode($json, true, 5);
像往常一样访问数组
<p>$details['id']</p>
<p>$details['displayName']</p>
<p>$details['subscriptionPolicies']['spendingLimit']</p>
编码愉快 ;)
【讨论】:
以上是关于呈现集合抛出“htmlspecialchars() 期望”我如何像 Eloquent 集合一样重新编辑它 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
htmlspecialchars() 或 如何以及在何处使用?