本文目录导读:

在 Laravel 中,验证错误默认会存储到 session 中,但具体机制取决于你使用的验证方式:
使用 validate() 方法(自动存储)
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|max:255',
'body' => 'required',
]);
// 验证通过...
}
默认行为:
- 验证失败时,Laravel 会自动抛出
ValidationException - 异常被全局异常处理器捕获后,会将错误信息闪存到 session(
session()->flash('errors', ...)) - 然后重定向回上一个页面(withInput)
手动使用 Validator(需手动存储)
use Illuminate\Support\Facades\Validator;
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|max:255',
]);
if ($validator->fails()) {
// 需要手动将错误存入 session
return redirect()->back()
->withErrors($validator) // 这个方法会自动存到 session
->withInput();
}
}
错误在 session 中的存储方式
错误存储在 $_SESSION['errors'] 中,但 Laravel 封装为 MessageBag 对象:
// 在视图中获取错误
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
// 获取特定字段的错误
@error('title')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
查看 session 中的错误
// 在控制器或中间件中
dump(session()->get('errors'));
// 或
dump($errors);
特别说明
- 每次新请求:错误会在新的请求中自动清除(闪存机制)
- API 路由:默认不存储到 session,而是直接返回 JSON 错误响应
- 自定义存储:你可以通过
withErrors()方法的第二个参数指定自定义 bag 名称
只要使用 Laravel 推荐的验证方式($request->validate() 或 withErrors()),验证错误都会自动存储到 session 中,无需手动处理。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播