Laravel htmlentities() 期望参数 1 为字符串,数组给定
Laravel htmlentities() expects parameter 1 to be string, array given
我正在尝试使用 https://github.com/skmetaly/laravel-twitch-restful-api 包将 twitch 集成到我的网站。
这就是我得到的错误。
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()
方法。
此方法调用 /streams/followed
which returns a data set such as the example below. It's automatically converted to an array rather than JSON using the Guzzle HTTP Client's json()
method。
{
"_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'] }}
可以工作,但在线时就不行了,你会得到同样的错误。您可能需要做的是在 @foreach
中使用 @if @else
块来确定流是否 null
,然后再尝试回显部分信息。
您还可以通过从数据中删除空值来过滤控制器中的离线流。
我正在尝试使用 https://github.com/skmetaly/laravel-twitch-restful-api 包将 twitch 集成到我的网站。
这就是我得到的错误。
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()
方法。
此方法调用 /streams/followed
which returns a data set such as the example below. It's automatically converted to an array rather than JSON using the Guzzle HTTP Client's json()
method。
{
"_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'] }}
可以工作,但在线时就不行了,你会得到同样的错误。您可能需要做的是在 @foreach
中使用 @if @else
块来确定流是否 null
,然后再尝试回显部分信息。
您还可以通过从数据中删除空值来过滤控制器中的离线流。