为什么 Laravel 验证不显示错误信息。
为什么 Laravel 验证不显示错误信息。
我在尝试验证表单请求时遇到了一个问题,即在视图上没有显示错误消息。
验证成功,刷新了视图,但没有显示错误。看起来$errors始终为空。
我在全新安装上进行了测试。
Laravel版本:5.8.33
PHP版本:7.3.8
数据库驱动程序和版本:mysql 5.7.22
表单代码如下:
@section('content')
@if ($errors->any())
- {{ $message }}
@foreach ($errors->all() as $message)
@endforeach
@endif
@endsection
具有验证功能的store函数如下:
public function store(Request $request)
{
$validatedData = $request->validate([
'name' => 'required|max: 10',
'avatar' => 'required|image',
'slug' => 'required',
'description' => 'required',
]);
$trainer = new Trainer();
$file = $request->file('avatar');
if ($file != "") {
$name = time().$file->getClientOriginalName();
$file->move(public_path().'/images/', $name);
}
else{
$name = "Sin Imagen.jpg";
}
$trainer->name = $request->input('name');
$trainer->avatar = $name;
$trainer->description = $request->input('description');
$trainer->slug = $request->input('slug');
$trainer->save();
return '已保存';
}
更新
在blade中添加{{ $errors }}并返回[],$errors为空。
为什么Laravel验证不显示错误?
当页面刷新时,如果错误对象不为空...并且您的控制器中的验证代码有效,因此请检查浏览器中的检查元素的HTML代码。可能错误框被隐藏了,为了测试,您可以在blade中使用以下代码:
@if ($errors->any())
($errors){{-- for check error bag --}}
- {{ $message }}
@foreach ($errors->all() as $message)
@endforeach
@endif
但是,无论如何,使用Chrome检查,我没有看到错误框。在blade中使用以下代码并添加{{ $errors }},显示[],是空的?
问题出现的原因:
- 错误框可能被隐藏了。
解决方法:
- 检查HTML代码,确保错误框没有被隐藏。
- 在blade中添加代码以显示错误信息。
- 使用Chrome的检查工具来确认错误框是否存在。
希望以上解决方法对于解决Laravel验证不显示错误的问题有所帮助。
laravel validation不显示错误的原因是代码中没有正确地处理错误信息。解决方法是在代码中添加正确的错误信息显示逻辑。
在给定的代码中,可以看到三个条件判断语句,分别用于显示成功信息、错误信息和验证错误信息。然而,在显示验证错误信息的部分存在问题,错误信息没有被正确地显示出来。
为了解决这个问题,可以使用`@if`语句来判断是否有验证错误信息存在,如果有则进行显示。修改后的代码如下:
@if (count($errors) > 0)Error! @foreach ($errors->all() as $error)@endif{{ $error }}
@endforeach
通过以上修改,当存在验证错误信息时,错误信息将正确地显示在页面中。这样用户就能够清楚地了解到哪些输入有误并进行相应的修正。
问题:为什么Laravel验证不显示错误信息?
原因:
1. 代码中使用了错误的验证方法。应该使用$this->validate
而不是$request->validate
。
2. 命名空间错误导致类找不到。可以尝试修复命名空间,使用\Validator
,或在文件顶部添加use Validator;
或use Illuminate\Support\Facades\Validator;
。
解决方法:
1. 修改代码,使用$this->validate
方法,并提供自定义的错误消息数组:
$messages = [ 'description.required' => 'description is required', ]; $validator = Validator::make($request->all(), [ 'name' => 'required|max:10', 'avatar' => 'required|image', 'slug' => 'required', 'description' => 'required', ], $messages);
2. 检查命名空间是否正确,使用\Validator
或添加use Validator;
或use Illuminate\Support\Facades\Validator;
。
以上错误信息Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into trainers (name, avatar, description, slug, updated_at, created_at) values (?, Sin Imagen.jpg, ?, ?, 2019-08-28 22:49:48, 2019-08-28 22:49:48))
与问题无关,不在本文讨论范围内。