Laravel htmlentities () ожидает, что параметр 1 будет строкой, задан массив

Я пытаюсь использовать 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() ошибка

0

Решение

Это происходит потому, что $data возвращается в виде массива.

когда TwitchApi::streamsFollowed($token); вызывается, Фасад вызывает метод в Skmetaly\TwitchApi\Services\TwitchApiService,

Это в свою очередь создает экземпляр Skmetaly\TwitchApi\API\Users и называет streamsFollowed() метод там.

Этот метод делает вызов /streams/followed который возвращает набор данных, такой как пример ниже. Он автоматически конвертируется в массив, а не в JSON, используя клиент Guzzle HTTP 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

Прочитав сейчас потоковый пример ответной документации может показаться, что содержимое потока меняется в зависимости от того, подключен ли поток к сети. NB. Предполагается, что структура данных такая же, как если бы вы не разместили содержимое потока в своем вопросе.

Это означает, что в автономном режиме, {{ $stream['broadcaster'] }} будет работать, но когда он-лайн, это не так, и вы получите ту же ошибку. Что вам, вероятно, нужно сделать, это использовать @if @else блок в вашем @foreach определить, является ли поток null прежде чем пытаться повторить часть информации.

Вы также можете фильтровать автономные потоки в контроллере, удаляя нулевые значения из данных.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]