所以我遇到了一个我无法解决的问题,并且不知道我应该从哪里开始。
我知道Laravel有一个很好的findOrFail()
功能,但我似乎无法在我的情况下使用它。例如,我有一条路线如下:
Route::get('user/{user}', 'UserController@show);
我的控制器
public function show(User $user)
{
//never reaches this section
}
现在这通常会起作用,但是如果记录不存在,Laravel会在我进入函数之前抛出错误。有没有一种很好的方法来捕捉错误而不用改变我的功能
public function show($id)
{
$user = User::findOrFail($id)
}
我发现在我的函数参数中使用用户类并希望不在那里删除它会更好。
答案 0 :(得分:2)
每the Laravel Docs for Route Model Binding(向下滚动到'自定义'未找到“行为”标题):
如果您希望指定自己的“未找到”行为,请将
Closure
作为第三个参数传递给model
方法:$router->model('user', 'App\User', function () { throw new NotFoundHttpException; });
之前他们指定放置该代码的位置:
您应该使用
RouteServiceProvider::boot
方法定义模型绑定。
答案 1 :(得分:0)
第一次回答问题所以请耐心等待!
您可以使用PHP try / catch块。所以像这样:
try {
//Your code here
} catch (\Exception $e) {
return \Redirect::to('/users')
->with('error', 1)
->with('message', 'Error getting your record!');
}
然后在您的Laravel刀片中,您可以执行以下操作:
@if(!empty($error) && $error == 1)
<div>
<strong>Uh-Oh!</strong>
@if(!empty($message))
{!! $message !!}
@endif
</div>
@endif
显示错误。您还可以重定向到所需的某个错误页面。