检查controller是否有404响应错误- Laravel 5

Check if there is a 404 response error in controller- Laravel 5

我正在开发 Halo 5 API,用户可以使用他们的玩家标签进行注册。当他们这样做时,他们可以登录,当他们登录时,他们可以转到他们的个人资料以查找他们的 Halo 5 统计数据。但显然有些用户不会输入合法的玩家代号。这就是我需要在我的控制器中验证 return 配置文件的视图。

这里是一个简单的控制器示例:

 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',
            )
        );
    }

我的问题是,如果用户不存在,它会抛出这个错误:

ClientException in RequestException.php line 107: Client error: GET https://www.haloapi.com/profile/h5/profiles/some%20useer/spartan resulted in a 404 Not Found response:

如果找不到该播放器,我如何进行一些检查,并得到 return 不同的结果?

也许是这样的?

 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',
            ))
  }

}

我想你可以在这里使用异常处理。

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;

知道了。更改 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);
    }