呈现集合抛出“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-&gt;foo 时,它会返回错误,因为它实际上应该是$detail['foo'],因为它在执行-&gt;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 集合一样重新编辑它 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

横向 IOS 应用程序在呈现模态视图控制器时抛出异常

htmlspecialchars() 或 如何以及在何处使用?

htmlspecialchars 编码行的 LIKE 函数

在插入 MySQL 之前使用 htmlspecialchars() 好吗?

htmlspecialchars函数绕过

Laravel - htmlspecialchars() 期望参数 1 是字符串,给定对象