我正在做一个crud,我想用id显示项目数据,我在web中有这个。php:
Route::get('update/{id}', 'CrudController@update');
我怎么能否认用户将路径中的id更改为不存在的id?只显示存在的和不存在的,不加载的?
cbeh67ev1#
在更新方法中,您可以执行以下操作:
public function update($id) { MyModel::findOrFail($id); //...perform other actions }
如果请求的$id不存在,则会抛出404响应。然后,如果需要,可以在app\Exceptions\Handler.php的render()方法中捕获它:
$id
app\Exceptions\Handler.php
render()
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 }
abort(404)方法将用户带到laravel的默认Page not found页面,这是一个合适的做法。
abort(404)
Page not found
1条答案
按热度按时间cbeh67ev1#
在更新方法中,您可以执行以下操作:
如果请求的
$id
不存在,则会抛出404响应。然后,如果需要,可以在
app\Exceptions\Handler.php
的render()
方法中捕获它:或者,如果您不想在处理程序中配置它的所有麻烦,您也可以这样做:
abort(404)
方法将用户带到laravel的默认Page not found
页面,这是一个合适的做法。