我正在使用Halo 5 API,用户可以注册他们的游戏玩家标签。当他们这样做时,他们可以登录,当他们登录时,他们可以访问他们的个人资料来查看他们的Halo 5的统计数据。但显然有些用户不会输入合法的玩家标签。那就是我需要在我的控制器中进行一些验证,以返回配置文件的视图。
以下是控制器的一个简单示例:
public function index ($slug) {
// Emblem URL.
$getPlayerEmblemImage = app('App\Http\Controllers\Api\GetGeneralStatsController')->getPlayerEmblemImage($slug);
// Get General Player Arena Stats
$playerGeneralStats = app('App\Http\Controllers\Api\GetGeneralStatsController')->getPlayerArenaStats($slug);
$playerGeneralStatsArray = $this->getPlayerGeneralStatsArray($playerGeneralStats);
// Get the Spartan Rank and XP
$spartanRank = json_decode($playerGeneralStatsArray['SpartanRank'], true);
$XP = json_decode($playerGeneralStatsArray['Xp'], true);
$Gamer_Tag = json_encode($playerGeneralStatsArray['Gamer_Tag'], true);
$user = User::whereSlug($slug)->firstOrFail();
return view('profile.index',
compact(
'user',
'spartanRank',
'XP',
'getPlayerEmblemImage',
'Gamer_Tag',
)
);
}
我的问题是,如果用户不存在,则会抛出此错误:
RequestException.php第107行中的ClientException: 客户端错误:
GET https://www.haloapi.com/profile/h5/profiles/some%20useer/spartan
导致404 Not Found
响应:
如果找不到该播放器,我如何进行一些检查并返回不同的结果?
也许是这样的?
public function index ($slug) {
if (// Doesnt exist, show this) {
// do some other code here
return view('profile.index', compact('user'))
} else {
// Code here....
return view('profile.index',
compact(
'user',
'spartanRank',
))
}
}
答案 0 :(得分:1)
我认为你可以在这里使用异常处理。
try{
// Code here....
return view('profile.index',
compact(
'user',
'spartanRank',
))
}
} catch(ClientException $exception) {
{
// do some other code here
return view('profile.index', compact('user'))
}
在您的控制器中导入use GuzzleHttp\Exception\ClientException;
使用GuzzleHttp \ Exception \ ClientException;
答案 1 :(得分:0)
知道了。更改App / Exceptions / Handler.php中的代码
public function render($request, Exception $e)
{
// Flash a success message saying you have successfully registered.
flash()->error('Error', 'That player has not played Halo, or does not exist.');
return redirect()->back();
// return parent::render($request, $e);
}