Php 在控制器中注入模型时,Laravel自定义错误
所以我遇到了一个问题,我还没有完全解决,也不知道从哪里开始 我知道Laravel有一个很好的Php 在控制器中注入模型时,Laravel自定义错误,php,laravel,error-handling,laravel-5.2,Php,Laravel,Error Handling,Laravel 5.2,所以我遇到了一个问题,我还没有完全解决,也不知道从哪里开始 我知道Laravel有一个很好的findOrFail()函数,但我似乎无法在我的例子中使用它。例如,我有一条路线如下: Route::get('user/{user}', 'UserController@show); 我的控制器 public function show(User $user) { //never reaches this section } 现在这将正常工作,但如果记录不存在,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)
}
我发现在我的函数参数中有用户类更好,并且不希望将其删除。第一次回答问题时,请耐心等待 您可以使用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
@if(!empty($error)&&$error==1)
哦强>
@如果(!empty($message))
{!!$message!!}
@恩迪夫
@恩迪夫
显示错误。您还可以重定向到所需的某个错误页面 Per(向下滚动至“自定义“未找到”行为”标题):
如果希望指定自己的“未找到”行为,请将闭包作为第三个参数传递给model
方法:
$router->model('user', 'App\User', function () {
throw new NotFoundHttpException;
});
之前,它们指定了放置该代码的位置:
您应该在RouteServiceProvider::boot
方法中定义模型绑定
问题是,在我可以在函数中执行任何操作之前,错误就已经显示出来了。即使我把回声放在“测试”;死亡在我的函数中,这不会被显示。如果你的代码没有到达你的函数,那就意味着之前有问题!您的路由是一个带有用户ID URL参数的GET。因此,您的函数应该在第一行中读取公共函数show($userid)
。然后,当您进行查询时,您可以执行类似于$user=user::find($userid)
的操作。然后您可以执行类似于if($user){//code}或者{//return to users with error}
的操作,从Laravel 5开始,您还可以执行类似于app()->make(\app\Models\user::class)->where('users.id','=',$userid)->get()代码>我认为这更干净,你不必注入你的模型。事实上,如果记录存在,你可以在函数中使用Classname$param,如我的代码所示,它会工作得很好。只是如果记录不存在,laravel会自动为您生成一个错误。我只是想知道在哪里能抓到这个。我错过了这个,真是太愚蠢了,非常感谢它解决了我的问题!