我在做杂事,我想使用id显示项目数据,我在web.php中有此内容:
Route::get('update/{id}', 'CrudController@update');
如何拒绝用户将路径中的ID更改为不存在的ID?那只会显示那些存在的东西,那些不存在的东西,不会加载?
答案 0 :(得分:0)
在更新方法中,您可以执行以下操作:
public function update($id)
{
MyModel::findOrFail($id);
//...perform other actions
}
如果请求的$id
不存在,它将抛出404响应。
然后您可以根据需要在render()
的{{1}}方法中捕获它:
app\Exceptions\Handler.php
或者,如果您不想处理在处理程序中配置它的所有麻烦,您也可以这样做:
use Illuminate\Database\Eloquent\ModelNotFoundException;
.
.
.
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException) {
if ($request->wantsJson()) {
return response()->json([
'data' => 'Resource not found'
], 404);
} else {
abort(404);
}
}
return parent::render($request, $exception);
}
public function update($id)
{
if (! $model = MyModel::find($id)) {
abort(404);
}
//...perform other actions with $model
}
方法将用户带到laravel的默认abort(404)
页面,这是适当的做法。