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

Laravel表单POST提交路由重复且数据未存储问题求助

解决Laravel表单提交路由重复导致404的问题

兄弟,我一眼就瞅出问题所在了——你表单里的action用了相对路径,这就是路由重复、404的元凶!

当你从类似entradas/1/ventaEntrada/200000/montoTotal/create的页面提交表单时,相对路径会在当前页面的URL基础上拼接,结果就变成了entradas/1/ventaEntrada/200000/montoTotal/entradas/1/ventaEntrada/200000/montoTotal,自然找不到对应的路由,返回404。

给你几个解决方案,按优先级来:

1. 用Laravel路由辅助函数生成可靠的action路径

这是最推荐的方式,完全避免路径拼接错误。首先你可以通过php artisan route:list命令确认你的resource路由中store方法的命名,应该是entradas.{id_entrada}.ventaEntrada.{precio_entrada}.montoTotal.store。

然后把表单的action改成这样:

<form action="{{ route('entradas.{id_entrada}.ventaEntrada.{precio_entrada}.montoTotal.store', ['id_entrada' => $id_entrada, 'precio_entrada' => $precio_entrada]) }}" method="POST"> 
    @csrf 
    <input type="number" name="monto_total" placeholder="Monto total" class="form-control mb-2" required> 
    <button class="btn btn-primary btn-block" type="submit">ADD</button> <!-- 这里你之前的clas拼写错了,改成class -->
    <a href="/entradas/1/ventaEntrada/1/montoTotal" class="btn btn-primary btn-sm">BACK</a> 
</form>

2. 改用绝对路径

如果暂时不想用路由辅助函数,只要在action的路径开头加个/,变成绝对路径就行:

<form action="/entradas/{{$id_entrada}}/ventaEntrada/{{$precio_entrada}}/montoTotal" method="POST">

这样表单提交时就会从网站根目录开始拼接路径,不会重复叠加当前页面的URL。

可选优化:调整路由结构更符合Laravel规范

你现在的resource路由嵌套了太多参数,其实precio_entrada完全可以放到表单的隐藏字段里,不用写在路由里。这样路由可以简化:

Route::resource('/entradas/{id_entrada}/ventaEntrada', 'Venta_entradaController');

然后在create方法里把precio_entrada传到视图,表单里加个隐藏字段:

<input type="hidden" name="precio_entrada" value="{{ $precio_entrada }}">

最后在store方法里通过$request->precio_entrada获取这个值就行,这样路由结构更清晰,也减少了出错的可能。

按上面的方法改完,再提交表单应该就能正常存储数据,不会出现404了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:10:45