Laravel 图片验证只是重新加载页面,什么都不做

Laravel image validation just reloads page and does nothing

所以问题是我的表单中有图片上传,我之前在其他项目上这样做过并且一切正常,但现在由于某种原因我无法使用 dd() 命令查看发送的内容来自 <form>。这是我的控制器代码:

    

        $data = $request->validate([
        'model_id' => 'required',
        'part_name' => 'required',
        'part_category' => 'required',
        'make_years' => 'required',
        'price' => 'required',
        'identifier_number' => '',
        'part_image' => 'image|mimes:jpg,png,jpeg,gif,svg|max:2048'
    ]);

    dd($data);

这是我的 blade 图像输入部分:


    <div class="form-row row-cols-1" style="margin-right: 0px;margin-left: 0px;">
                                            <label for="part_image" class="custom-file-upload btn btn-primary text-nowrap d-flex d-sm-flex d-md-flex d-lg-flex justify-content-center align-items-center justify-content-sm-center align-items-sm-center justify-content-md-center align-items-md-center justify-content-lg-center align-items-lg-center justify-content-xl-center align-items-xl-center">
    <i class="fa fa-cloud-upload"></i>Įkelti nuotrauką
    </label>
    <input id="part_image" name="part_image" type="file" hidden>
    @error('part_image')
    <span class="invalid-feedback" role="alert">
    <strong>{{ $message }}</strong>
    </span>
    @enderror
    
    </div>

所以基本上如果我在我的控制器中注释 part_image 验证,dd() 函数工作,并且我看到所有通过 POST 发送的变量,但是如果我尝试取消注释图像验证,当我提交,页面重新加载,我什至看不到任何错误或转储消息。可能是什么问题呢?这可能是一些愚蠢的错误,但我能找到它。 我也在我的表格中说明 enctype="multipart/form-data" 所以事实并非如此

您没有访问 dd() 是因为您肯定有验证错误,但您没有在 blade 视图中正确显示它们。如果您没有任何验证错误,控制流将到达 dd() 并在控制器内打印结果。 $request->validate(...) 自动将您重定向回来,因此您可以做的是在 blade 视图中正确显示错误,最好一次调试:

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