You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Laravel控制器代码实现数据验证?当前验证无响应

解决Laravel验证后dd无反应的问题
  • 先确认验证规则是否正确生成
    在执行$request->validate($nilai);之前,先打印$nilai数组,验证规则是否符合预期:

    dd($nilai); // 放在$request->validate代码上方
    

    如果$nilai是空数组,说明Profilbidangkajian::all()没有查询到数据,或是关联的matakuliah不存在/无nama字段,此时验证会直接通过,但dd($validated)只会输出空数组。

  • 注意验证失败的自动重定向行为
    Laravel的validate()方法在验证失败时,会自动重定向回请求来源页面,并把错误信息存入Session,这种情况下代码根本不会走到dd($validated)这一步。

    • 若是表单提交场景,可在前端页面添加错误提示代码查看验证错误:
      @if ($errors->any())
          <div class="alert alert-danger">
              <ul>
                  @foreach ($errors->all() as $error)
                      <li>{{ $error }}</li>
                  @endforeach
              </ul>
          </div>
      @endif
      
    • 若是AJAX/API请求,validate()会返回JSON格式的错误响应,需在浏览器开发者工具的Network标签中查看请求的响应内容。
  • 手动捕获验证异常,强制查看错误
    若想跳过自动重定向,直接查看验证错误,可手动使用Validator类实现验证:

    use Illuminate\Support\Facades\Validator;
    
    public function perengkingan(Request $request)
    {
        $kriteriaPenilaian = Profilbidangkajian::all();
        $nilai = [];
        foreach ($kriteriaPenilaian as $value) {
            // 先判断关联是否存在,避免报错
            if ($value->matakuliah) {
                $nilai[$value->matakuliah->nama] = 'required';
            }
        }
    
        $validator = Validator::make($request->all(), $nilai);
    
        if ($validator->fails()) {
            dd($validator->errors()); // 直接打印错误信息
            // 也可根据需求返回重定向:return redirect()->back()->withErrors($validator)->withInput();
        }
    
        $validated = $validator->validated();
        dd($validated);
    }
    
  • 检查请求字段名是否匹配
    确认前端表单输入框的name属性,与$nilai数组中的键名完全一致(包括大小写、空格等细节),否则验证会判定该字段未提交,触发必填规则错误。

内容的提问来源于stack exchange,提问作者GreatLeaf__

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 04:20:29