我正在尝试从app \ Exceptions \ Handler类中全局捕获 ModelNotFoundException ,以便不必在每个控制器上都进行检查。
但是,尽管它在控制器内部也可以正常工作,但它却无法正常工作:
try {
$asset = Asset::findOrFail($asset_id);
} catch (Exception $e) {
if ($e instanceof ModelNotFoundException)
{
$model = explode('\\', $e->getModel());
return $this->respondWithRecordNotFound(end($model) . ' record not found');
}
return $this->respondWithGeneralError($e->getMessage());
}
app \ Exceptions \ Handler:
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException)
{
$model = explode('\\', $exception->getModel());
return $this->respondWithRecordNotFound(end($model) . ' record not found');
}
return parent::render($request, $exception);
}
答案 0 :(得分:0)
我不确定您的respondWithRecordNotFound
在做什么。我想问题可能出在这里。
无论如何,我只是尝试了一下,这对我有用。在App\Exceptions\Handler.php@render
if ($e instanceof \Illuminate\Database\Eloquent\ModelNotFoundException) {
return response()->view(
'errors.404',
["message" => $e->getModel() . ' record not found'],
404
);
}
答案 1 :(得分:0)
只需确保已在Handler.php中添加了使用
use \Illuminate\Database\Eloquent\ModelNotFoundException;