簡體   English   中英

Laravel htmlentities()期望參數1為字符串,給定數組

[英]Laravel htmlentities() expects parameter 1 to be string, array given

我正在嘗試使用https://github.com/skmetaly/laravel-twitch-restful-api軟件包將抽搐集成到我的網站。

那就是我得到的錯誤。

ErrorException in helpers.php line 469:
htmlentities() expects parameter 1 to be string, array given (View: /var/www/rafdev.ovh/html/msvixen/resources/views/twitch.blade.php)

我的控制器$ code = Input :: get('code');

    if ($code !== null)
    {
        $token = TwitchApi::requestToken($code);
    } else
    {
        $token = null;
    }

    $data = TwitchApi::streamsFollowed($token);

    return view('twitch', ['token' => $token, 'data' => $data]);

我的觀點

@extends('master')

@section('content')
    <h1>Twitch.TV</h1>
    {{ $token }}

    {{ $data }}
@endsection

使用dd()

array:9 [▼
  0 => array:11 [▼
    "_id" => 17733016640
    "game" => "World of Warcraft"
    "viewers" => 15551
    "created_at" => "2015-11-15T22:27:13Z"
    "video_height" => 1080
    "average_fps" => 60.2769481401
    "delay" => 0
    "is_playlist" => false
    "_links" => array:1 [▶]
    "preview" => array:4 [▶]
    "channel" => array:22 [▶]
  ]
  1 => array:11 [▶]
  2 => array:11 [▶]
  3 => array:11 [▶]
  4 => array:11 [▶]
  5 => array:11 [▶]
  6 => array:11 [▶]
  7 => array:11 [▶]
  8 => array:11 [▶]
]

這樣就可以了,但是當我嘗試顯示數據時-回到htmlentities()錯誤

發生這種情況是因為$data作為數組返回。

TwitchApi::streamsFollowed($token); 調用后,Facade將調用Skmetaly\\TwitchApi\\Services\\TwitchApiService

反過來,這將創建Skmetaly\\TwitchApi\\API\\Users的實例,並在streamsFollowed()調用streamsFollowed()方法。

此方法對/streams/followed進行調用,該調用返回數據集,例如下面的示例。 使用Guzzle HTTP Client的json()方法,它會自動轉換為數組,而不是JSON。

{
  "_links": {
    "self": "https://api.twitch.tv/kraken/streams/followed?limit=25&offset=0",
    "next": "https://api.twitch.tv/kraken/streams/followed?limit=25&offset=25"
  },
  "_total": 123,
  "streams": [...]
}

為了顯示流,您需要遍歷$data的streams數組。

如果您要稍微修改控制器

return view('twitch', ['token' => $token, 'streams' => $data->streams]);

然后,您可以在視圖中迭代流。

@foreach($streams as $stream)
    {{ $stream }}
@endforeach

更新:您會注意到每個流也是一個數組。 這意味着您需要選擇每個數組中要顯示的鍵。 假設其中一個流中有一個稱為broadcaster的鍵,其中包含一個字符串; 您可以按如下方式修改以上內容。

@foreach($streams as $stream)
    {{ $stream['broadcaster'] }}
@endforeach

現在,閱讀流示例響應文檔后 ,流的內容將根據流是否在線而有所不同。 注意:這是假設數據結構與您尚未在問題中發布流的內容相同。

這意味着離線{{ $stream['broadcaster'] }}可以正常工作,但在線時則不行,並且您會遇到相同的錯誤。 您可能需要做的是在嘗試回顯部分信息之前,在@foreach使用@if @else塊來確定流是否為null

您還可以通過從數據中刪除空值來過濾控制器中的脫機流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM