php - Laravel - 在控制器内部验证而不进行 CustomRequest
问题描述
我想验证我通过路由传递给我的控制器的 get 参数。
api/路由
获取 /order/{id} -> OrderController::order
public function order($id) {
// validation here (rules= require,between 1 and 1000)
return Order::find($id);
}
- 如何在不创建单独的请求类的情况下在控制器内部进行验证?
- 我必须导入哪个验证类?(这个: Illuminate\Support\Facades\Validator ?)
- 这是一个好的或常见的解决方案吗?
解决方案
$id
始终存在,因此required
验证始终通过。所以你只需要检查between 1 and 1000
条件。我认为在路由中使用正则表达式约束是一个好主意。
Route::get('/order/{id}','OrderController@order')
->where(['id'=> '1000|^[1-9]{0,2}[1-9]$']);
如果id
小于 1 或大于 1000 或任何其他随机字符串,它将与路由不匹配,如果也没有任何其他匹配路由,则会给出 404 错误。
如果你真的想验证控制器中的路由参数,你可以使用这个:
$validator = \Illuminate\Support\Facades\Validator::make(['id' => $id],
[
'id' => 'required|integer|between:1,1000'
]
);
$validator->validate();
推荐阅读
- android - 更改屏幕锁定回调
- google-cloud-platform - Google Cloud Shell Editor 未加载资源
- azure - 为什么 Azure 函数不写入服务总线主题
- android - Mapbox fitbounds 选项仅适用于 Android,适用于 IOS
- php - PHP 中的 while 和 file_exists
- mysql - 四张表的mysql查询错误
- javascript - 如何从 Firebase 数据库中的对象获取数据?
- python - Python - ETree element.find 部分匹配
- android - 使用 LiveData 依赖项构建时“无法解决:support-fragment”
- office-addins - 将客户特定数据注入 Outlook 加载项