在 Laravel 中,手动返回或抛出验证错误/异常通常涉及到使用 Validator
类或 ValidationException
异常。以下是一些常见的方法:
如果你想在控制器或其他地方手动验证数据并抛出错误,可以使用 Validator
类来创建一个验证器实例,然后根据验证结果决定是否抛出异常。
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
public function store(Request $request)
{
// 手动定义验证规则
$rules = [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
];
// 执行验证
$validator = Validator::make($request->all(), $rules);
// 如果验证失败,抛出 ValidationException 异常
if ($validator->fails()) {
throw new ValidationException($validator);
}
// 验证通过后的逻辑...
}
ValidationException
抛出异常你也可以直接使用 ValidationException
类来抛出异常,而不是先创建一个验证器实例。
use Illuminate\Validation\ValidationException;
public function update(Request $request, $id)
{
// 假设你已经从数据库获取了用户数据
$user = User::find($id);
// 手动验证数据
if (!$user || $user->email !== $request->input('email')) {
throw new ValidationException(
Validator::make(['email' => $request->input('email')], ['email' => 'required|email|unique:users,email'])
);
}
// 更新逻辑...
}
在 API 控制器中,你可能希望返回 JSON 格式的错误响应。Laravel 提供了便捷的方法来处理这种情况。
use Illuminate\Http\Exceptions\HttpResponseException;
public function store(Request $request)
{
$rules = [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
throw new HttpResponseException(response()->json([
'errors' => $validator->errors(),
], 422));
}
// 验证通过后的逻辑...
}
通过这些方法,你可以在 Laravel 中灵活地手动返回或抛出验证错误/异常,以满足不同的业务需求。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云