我尝试使用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 =输入:: get('代码');
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()
错误
答案 0 :(得分:1)
这种情况正在发生,因为$data
作为数组返回。
调用TwitchApi::streamsFollowed($token);
时,Facade会调用Skmetaly\TwitchApi\Services\TwitchApiService
中的方法。
这反过来会创建Skmetaly\TwitchApi\API\Users
的实例并在那里调用streamsFollowed()
方法。
此方法调用/streams/followed
,返回一个数据集,如下例所示。它使用Guzzle HTTP Client的json()
method自动转换为数组而不是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
内遍历流数组的流。
如果您稍微修改控制器
return view('twitch', ['token' => $token, 'streams' => $data->streams]);
然后,您就可以在视图中迭代流。
@foreach($streams as $stream)
{{ $stream }}
@endforeach
更新:您会注意到每个流也是一个数组。这意味着你需要选择你想要显示的每个数组中的哪个键。我们假设在其中一个流中有一个名为broadcaster
的密钥,其中包含一个字符串;您可以按如下方式修改上述内容。
@foreach($streams as $stream)
{{ $stream['broadcaster'] }}
@endforeach
现在看了streams example response documentation,看来流的内容会根据流是否在线而有所不同。注意:这是假设数据结构与您未在问题中发布流内容相同。
这意味着离线,{{ $stream['broadcaster'] }}
会起作用,但在线时它不会,你会得到同样的错误。您可能需要做的是在@if @else
中使用@foreach
块来确定流是否为null
,然后再尝试回复部分信息。
您还可以通过从数据中删除空值来过滤控制器中的离线流。