渲染 collection 抛出 "htmlspecialchars() expects" 我怎样才能像 Eloquent collection 一样渲染它
rendering a collection throws "htmlspecialchars() expects" how can I reder it like a Eloquent collection
我调用了一个 API 并将响应放入 collection(我认为这是个好主意),使其像 eloquent collection 一样带有 foreach在 blade
我的特点:
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)
]);
}
}
我的blade
<div>
@foreach($details as $detail)
<p>{{$detail->foo}}</p>
<p>{{$detail->bar}}</p>
<p>{{$detail->baz}}</p>
@endforeach
</div>
这是 collection 的样子:
当您在集合中调用 all()
方法时,它 returns 底层数组。
例如
collect([1, 2, 3])->all();
// [1, 2, 3] <--- returned
因此,当您尝试执行 $detail->foo
时,它 returns 是一个错误,因为它实际上应该是 $detail['foo']
,因为它在执行 ->all()
之后作为数组返回。
所以尝试删除 all()
应该可以。
还是多睡点吧,终于明白了:
我删除了关于特征的集合
- 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>
编码愉快 ;)
我调用了一个 API 并将响应放入 collection(我认为这是个好主意),使其像 eloquent collection 一样带有 foreach在 blade
我的特点:
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)
]);
}
}
我的blade
<div>
@foreach($details as $detail)
<p>{{$detail->foo}}</p>
<p>{{$detail->bar}}</p>
<p>{{$detail->baz}}</p>
@endforeach
</div>
这是 collection 的样子:
当您在集合中调用 all()
方法时,它 returns 底层数组。
例如
collect([1, 2, 3])->all();
// [1, 2, 3] <--- returned
因此,当您尝试执行 $detail->foo
时,它 returns 是一个错误,因为它实际上应该是 $detail['foo']
,因为它在执行 ->all()
之后作为数组返回。
所以尝试删除 all()
应该可以。
还是多睡点吧,终于明白了:
我删除了关于特征的集合
- 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>
编码愉快 ;)