首页 > 解决方案 > 为什么 laravel 验证不显示错误

问题描述

我正在尝试验证来自表单的请求并出现问题,而不是在视图上显示错误消息。验证成功,刷新视图但不显示错误。显然 $errors 总是空的,我在全新安装时对其进行了测试。

Laravel 版本:5.8.33 PHP 版本:7.3.8 数据库驱动和版本:mysql 5.7.22

形式是这个

@section('content')    
    @if ($errors->any())
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $message)
                    <li>{{ $message }}</li>
                @endforeach
            </ul>
        </div>
    @endif

    <form class="form-group" method="POST" action="/trainers" enctype="multipart/form-data">
        @csrf   

        <div class="form-group">
            <label for="">Nombre</label>
            <input type="text" name="name" value="@isset($trainer->name){{$trainer->name}}@endisset" class="form-control">
        </div>

        <div class="form-group">
            <label for="">Slug</label>
            <input type="text" name="slug" value="@isset($trainer->slug){{$trainer->slug}}@endisset" class="form-control">
        </div>

        <div class="form-group">
            <label for="">Descripción</label>
            <input type="text" name="description" value="@isset($trainer->description){{$trainer->description}}@endisset" class="form-control">
        </div>

        <div class="form-group">
            <label for="">Avatar</label>
            <input type="file" name="avatar">
        </div>

        <button type="submit" class="btn btn-primary">Guardar</button>
        </form>
@endsection

带有验证的存储功能是这个

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";
                }
        // return $name; //Ver nombre archivo
        $trainer->name = $request->input('name');
        $trainer->avatar = $name;
        $trainer->description = $request->input('description');
        $trainer->slug = $request->input('slug');
        $trainer->save();

        return 'Saved';
    }

UPDATE 在刀片中添加 {{ $errors }} 并返回 [],$errors 为空

标签: phplaravelvalidationrequestlaravel-blade

解决方案


而不是使用$request->validate 编辑您的代码,$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);

推荐阅读