在 laravel 6 中以 post 方法发送表单数据给出错误,因为该路由不支持 POST 方法。支持的方法:GET、HEAD

Posted

技术标签:

【中文标题】在 laravel 6 中以 post 方法发送表单数据给出错误,因为该路由不支持 POST 方法。支持的方法:GET、HEAD【英文标题】:In laravel 6 sending form data in post method giving error as The POST method is not supported for this route. Supported methods: GET, HEAD 【发布时间】:2020-01-27 22:01:00 【问题描述】:

我试图将整个表单数据作为 post 方法存储到 post 方法中的路由中,给出如下错误

此路由不支持 POST 方法。支持的方法:GET、HEAD。

请看下面的代码

web.php

 Route::get('/purchase/index','PurchasesController@index')->name('purchase.index');
 Route::get('/purchase/create','PurchasesController@create')->name('purchase.create');
 Route::post('/purchase/store','PurchasesController@store')->name('purchase.store');

create.blade.php

@extends('layouts.nav') @section('content')

<div class="container  mt-3 border ">
    <div class="row  justify-content-center align-items-center" style="background-color:teal;color:#fff;">

        <h1> Purchase Details</h1>
    </div>
    !!Form::open(['route'=>['purchase.store'],'id'=>'purchase_form','method'=>'POST'])!!

    <div class="container">
        <div class="row   float-left m-3">
            -- !!Form::open(['route'=>['purchase.store'],'id'=>'purchase_form','method'=>'POST'])!! --

            <form>
                Date:
                <input type="date" date-format="mm-dd-yyyy" placeholder="MM-DD-YYYY" name="date" id="datePicker">

            </form>
        </div>
        <!-- <div class="col-sm-4 pull-right " style="margin-top:5px;margin-bottom:5px;">-->
        <div class="row  justify-content-center float-right m-3">

            <button type="button" class="btn btn-info add-new" id="addnew"><i class="fa fa-plus"></i> Add New</button>

        </div>
    </div>
    <div class="container mt-3">
        <form method="POST" action=" ">
            <table class="table table-bordered" id="tb2">
                <thead class="text-center">
                    <tr class="tr-header">
                        <th>CI No</th>
                        <th>ItemName</th>
                        <th>Unit</th>
                        <th>Price</th>
                        <th>SubTotal</th>
                        <th>Actions</th>
                    </tr>
                </thead>

                <tbody>
                    <tr>

                        <td class="clid"></td>
                        <td>
                            <input type="text" class="form-control name" name="name" id="inputGroupSelect01">
                        </td>
                        <td>
                            <input type="text" class="form-control qty" name="qty" id="qty">
                        </td>
                        <td>
                            <input type="text" class="form-control rate" name="rate" id="rate">
                        </td>
                        <td>
                            <input type="text" class="form-control subTotal" name="subTotal" id="subTotal">
                        </td>

                        <td> <a class="delete" title="Delete" data-toggle="tooltip"><i class="material-icons">&#xE872;</i></a> </td>
                    </tr>
                </tbody>
            </table>

    </div>
    <div class="float-right m-3">
        -- !!Form::submit('Submit');!! --
        <form method="POST" action="/purchase/store">
            <button type="submit" name="edit" class="btn btn-primary ">Submit</button>
        </form>
    </div>
    <div class=" float-right m-3">
        <h5><b>Grand Total</b></h5>
        <input type="text-box" class="grandTotal" maxlength="10" size="10">
    </div>

</div>

</div>
!!Form::close()!! @stop

PurchasesController.php

 public function store(Request $request)
 
      //
        return "i have entered store";
 

【问题讨论】:

你的表单代码都乱了。您在另一个表单中有三个表单,其中一个表单没有操作&lt;form method="POST" action=" "&gt;,因此它将发布到您所在的页面。修正你的表格,你就会解决你的问题。 请通过表单方法 post 和 CSRF 令牌将您的数据发布到控制器中。 您在 CMD 中编写运行命令。 php artisan route:list 所以你还可以获得 6 种方法来存储更新 fetch..like..所以你也可以从这个命令中获取你的路由。 【参考方案1】:

尝试使用

<form method="POST" action="url(purchase/store)">

并确保您没有使用前缀组

【讨论】:

以上是关于在 laravel 6 中以 post 方法发送表单数据给出错误,因为该路由不支持 POST 方法。支持的方法:GET、HEAD的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:使用 POST 请求将数据发送到控制器方法

Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法

如何在 MVC 5 中以单个 Ajax POST 请求发送 ViewModel 和文件?

从外部站点向 Laravel 发送 POST 请求

在laravel中将数据插入数据透视表

post 方法在 laravel 8 中无法使用 react native for android