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

Laravel 8 同控制器下request()->validate()第二次调用失效报GET路由错误

你遇到的报错和验证逻辑本身无关,是表单字段名和验证规则不匹配触发验证失败,后续重定向导致的方法不兼容报错,具体修复方案如下:

根因排查

  • 第一处错误:表单字段名和验证规则字段完全不匹配,导致request()->validate()必然验证失败:
    • 验证规则要求必填字段payment_type,但表单对应输入框的name属性为payment-type(中横线和下划线不匹配,Laravel不会自动转换)
    • 验证规则要求必填字段amount_due,但表单对应输入框的name属性为amount,名称完全不一致
  • 第二处错误:验证失败后Laravel默认会返回302重定向到表单来源页,请求方式为GET。如果你的表单展示页路由仅支持POST方法,就会触发「GET方法不支持,建议使用POST」的报错。

修复步骤

  1. 修改Blade表单的字段name属性,和验证规则保持一致:
    <!-- 修改前 -->
    <input type="text" class="form-control" name="payment-type" placeholder="Payment Type...">
    <input type="number" min="2" max="" step="any" class="form-control" name="amount" placeholder="Amount Due...">
    <!-- 修改后 -->
    <input type="text" class="form-control" name="payment_type" placeholder="Payment Type...">
    <input type="number" min="2" max="" step="any" class="form-control" name="amount_due" placeholder="Amount Due...">
    
  2. 检查展示表单的页面路由,将其改为GET类型(表单展示页面本身就应该通过GET请求访问)。
  3. 可选优化:确认PaymentInfo模型的$fillable属性已包含payment_type、terms、amount_due、from、to这几个字段,避免触发批量赋值报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:27:01