我正在使用Discord API让Discord公会的成员显示10个随机用户,并在视图中使用刀片显示。foreach
方法。
我从API中获取JSON,获取其中的成员数组,并将其剪裁成只返回10个成员,从控制器将其发送到视图。
问题是,当我想解析它并使用数组中的一个元素(avatar_url
),但它没有工作,我得到了这个错误信息。Trying to get property 'avatar_url' of non-object
这是我的控制器
class IndexController extends Controller {
...
/**
* Function to get 10 random players on fivem
* @return array
*/
private function getServerPlayers() {
$request = file_get_contents('https://discordapp.com/api/guilds/683766194884575355/widget.json');
$decoded = json_decode($request, true)['members'];
return array_slice($decoded, 0, 10);
}
/**
* Return index view
* @return Factory|View
*/
public function index() {
return view('index')->with('players', $this->getServerPlayers())->with('clients', $this->getServerClients())->with('members', $this->getDiscordMembers());
}
}
以下是我的看法
<div class="row">
<div class="col-lg-12">
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-all-bets" role="tabpanel"
aria-labelledby="pills-all-bets-tab">
<div class="responsive-table">
<table class="table">
<thead>
<tr>
<th scope="col">Nom du joueur</th>
<th scope="col">Statut</th>
</tr>
</thead>
<tbody>
@foreach($players as $player)
<tr>
<td><img src="{{ $player->avatar_url }}">{{ $player->username }}</td>
<td>En ligne</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
我认为这个问题是一种愚蠢的,但我对它的封锁,我需要一些帮助!。
谢谢。
您应该使用 avatar_url
像这样。
<td><img src="{{ $player['avatar_url'] }}">{{ $player['username'] }}</td>
因为你传递给view的是一个数组,而不是一个对象。
问题是 json_decode
返回一个数组,而不是一个对象。
你可以使用以下方法将参数传递给视图。
return view('index',[
'players' => $this->getServerPlayers(),
'clients' => $this->getServerClients(),
'members' => $this->getDiscordMembers(),
]);
然后在视图中显示它们,使用
<img src="{{ $player['avatar_url'] }}">{{ $player['username'] }}