Laravel删除操作跳转至show页面而非执行destroy问题求助
问题解决:点击删除按钮跳转到Show页面而非执行Destroy方法
问题原因
HTML表单默认使用GET请求方法,而Laravel资源路由中,GET /products/{product}对应show方法,DELETE /products/{product}才对应destroy方法。你虽然添加了@method('DELETE')(Laravel的请求方法伪造),但未给删除表单指定method="POST",导致请求仍以GET方式发送,最终匹配到show路由。
修复方案
修改删除表单,添加method="POST"属性:
<td><form class="delete" action="{{ route('products.destroy',$product->id) }}" method="POST"> @csrf @method('DELETE') <button>Delete</button> </form></td>
额外说明
- 用
<a>标签无效是因为<a>默认发送GET请求,同样会匹配show路由,无法触发destroy方法。 - 如果之前执行过
php artisan route:cache,建议执行php artisan route:clear清除路由缓存,确保配置生效。 - 手动删除数据库数据正常,说明模型与数据库关联无问题,仅请求方法匹配出错。
内容的提问来源于stack exchange,提问作者Pranav Sompura
相关产品推荐
相关产品推荐

