此路由不支持 post 方法

Posted

技术标签:

【中文标题】此路由不支持 post 方法【英文标题】:The post method is not supported for this route 【发布时间】:2019-08-23 09:31:52 【问题描述】:

我是 laravel 新手,我想提交一个包含三个附件和一些数组的表单

但是当我点击提交按钮时,laravel 说

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

我搜索了很多,但找不到任何错误

我的观点

<div>
    <form action="insertquotation" method="post" enctype="multipart/form-data">
        @csrf
        <table border="1" id="formTable">
            <thead>
            <tr>
                <td>procurment_request_number</td>
                <td>quotationer</td>
                <td>shop_name</td>
                <td>shop_account_number</td>
                <td>shop_permit</td>
                <td>shop_quatation</td>
            </tr>
            </thead>

            <tbody>
            <tr>
                <td>
                    <input type="text" name="procurment_request_number" id="procurment_request_number" value="$result->first()->request_number">
                    --<select name="procurment_request_number[]" id="procurment_request_number">--
                        --@foreach($result as $results)--
                            --<option value="$results->request_number">$results->request_number</option>--
                            --@endforeach--
                    --</select>--
                </td>
                <td><input type="text" id="quotationer1" name="quotationer1"></td>
                <td><input type="text" name="shop_name1" id="shop1_name"></td>
                <td><input type="text" name="shop_account_number1" id="shop1_account_number"></td>
                <td><input type="text" name="shop_permit1" id="shop1_permit"></td>
                <td><input type="file" accept="application/pdf" name="shop_quatation1" id="shop_quatation"></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="text" id="quotationer" name="quotationer2"></td>
                <td><input type="text" name="shop_name2" id="shop1_name"></td>
                <td><input type="text" name="shop_account_number2" id="shop1_account_number"></td>
                <td><input type="text" name="shop_permit2" id="shop1_permit"></td>
                <td><input type="file" accept="application/pdf" name="shop_quatation2" id="shop_quatation"></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="text" id="quotationer" name="quotationer3"></td>
                <td><input type="text" name="shop_name3" id="shop1_name"></td>
                <td><input type="text" name="shop_account_number3" id="shop1_account_number"></td>
                <td><input type="text" name="shop_permit3" id="shop1_permit"></td>
                <td><input type="file" accept="application/pdf" name="shop_quatation3" id="shop_quatation"></td>
            </tr>
                <tr>
                    <td>Item_ID</td>
                    <td>Quantity</td>
                    <td>Unit_ID</td>
                    <td>description</td>
                    <td>Shop1_price</td>
                    <td>Shop2_price</td>
                    <td>Shop3_price</td>
                </tr>
                @foreach($result as $results)
                <tr>
                    <td><input type="text" name="itemid[]" id="itemid" value="$results->id"></td>
                    <td><input type="text" name="quantity[]" id="quantity" value="$results->quantity"></td>
                    <td><input type="text" name="units_id[]" id="units_id" value="$results->units_id"></td>
                    <td><input type="text" name="description[]" id="description" value="$results->description"></td>
                    <td><input type="text" name="shop1_price[]" id="shop1_price"></td>
                    <td><input type="text" name="shop2_price[]" id="shop2_price"></td>
                    <td><input type="text" name="shop3_price[]" id="shop3_price"></td>
                </tr>
                </tbody>
            @endforeach
        </table>
        --<input value="addrow" type="button" id="addrow"  onclick="javascript: addRow();">--
        <input type="submit" value="submit">
    </form>
</div>

我的控制器


public function insertquotation(request $request)

    if ($file = $request->file('shop1_quatation')) 
        $name = $file->getClientOriginalName();
        $file->move('procurement_files', $name);
        $file2 = $request->file('shop2_quatation');
        $name2 = $file2->getClientOriginalName();
        $file2->move('procurement_files', $name2);
        $file3 = $request->file('shop2_quatation');
        $name3 = $file2->getClientOriginalName();
        $file3->move('procurement_files', $name3);
        $procurment_request_number = $request->input('procurment_request_number');
        $quotationer1 = $request->input('quotationer1');
        $quotationer2 = $request->input('quotationer2');
        $quotationer3 = $request->input('quotationer3');
        $shop_name1 = $request->input('shop_name1');
        $shop_account_number1 = $request->input('shop_account_number1');
        $shop_permit1 = $request->input('shop_permit1');
        $shop_name2 = $request->input('shop_name2');
        $shop_account_number2 = $request->input('shop_account_number2');
        $shop_permit2 = $request->input('shop_permit2');
        $shop_name3 = $request->input('shop_name3');
        $shop_account_number3 = $request->input('shop_account_number3');
        $shop_permit3 = $request->input('shop_permit3');
        $numbers = $request->input('itemid');
        for ($i = 0; $i < count($numbers); $i++) 
            $itemid = $request->input('itemid');
            $shop1_price = $request->input('shop1_price');
            $shop2_price = $request->input('shop2_price');
            $shop3_price = $request->input('shop3_price');
            DB::insert("INSERT INTO procurment_quotations (`procurment_request_number`, `itemid`, `quotationer1`, `quotationer2`, `quotationer3`, `shop1_name`, `shop1_account_number`, `shop1_permit`, `shop1_quatation`, `shop1_price`, `shop2_name`, `shop2_account_number`, `shop2_permit`, `shop2_quatation`, `shop2_price`, `shop3_name`, `shop3_account_number`, `shop3_permit`, `shop3_quatation`, `shop3_price`, `created_at`, `updated_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,)", [$procurment_request_number, $itemid[$i],$quotationer1,$quotationer2,$quotationer3,$shop_name1,$shop_account_number1,$shop_permit1,$name,$shop1_price,$shop_name2,$shop_account_number2,$shop_permit2,$name2,$shop2_price,$shop_name3,$shop_account_number3,$shop_permit3,$name3,$shop3_price]);
        
    

还有我的路线

Route::Post('insertquotation','Home@insertquotation');

错误是

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

【问题讨论】:

在路由文件中将Post 更改为post 帖子区分大小写尝试将其更改为 Route::Post('insertquotation','Home@insertquotation');Route::post('insertquotation','Home@insertquotation'); action=" route('insertquotation') " 【参考方案1】:

我认为从action="insertquotation",你应该把它变成action="url('insertquotation')"

我可以看看你routes/web.php 文件中的代码吗?你应该在那里声明路线insertquotation

例如:

Route::post('insertquotation', 'YourController@yourMethod');

【讨论】:

action=" route('insertquotation') " 他唯一一次使用“路由”助手是在他命名路由时,通过添加代码 ->name('inserquotation'); 但这将是多余的,因为这是声明的路线,他也会将其命名为“插入引用”? 它给出了这样的错误 ""Route [insertquotation] not defined。 (查看:C:\xampp\procurement\resources\views\quotation.blade.php)" 我认为您缺少一些代码来向我们展示,我们在哪里可以找到您已指示名为 quotation.blade.php 的视图?【参考方案2】:

我需要在您的代码中指出的几件事

在创建路由时最好使用路由名称,这样当您需要将路由 URL 更改为其他内容时,您只需在路由文件(而不是查看文件)中更改它

Route::post('insertquotation','Home@insertquotation')->name('insertquotation');

现在在您的视图中,您需要这样做

<form method="POST" enctype="multipart/form-data" action=" route('insertquotation') "> ... </form>

将来当您想要(也许不)将 URL 更改为 /quotation/insert 时,您所要做的就是在路由文件中进行更改。

现在,在您的控制器内部,

有一个函数可以检查文件是否存在$request-&gt;hasFile('shop1_quatation'),在 if 条件中使用它更正确,而不是在文件中传递。

另外,使用 Laravel eloquent 将数据插入数据库要好得多。 Learn more here

【讨论】:

【参考方案3】:

更改刀片文件:

<form method="POST" enctype="multipart/form-data" action=" route('insertquotation') ">

在您的 routes/web.php 文件中将 Post 更改为 post

Route::post('insertquotation','Controllername@methodname')->name('insertquotation');

【讨论】:

现在它说“Route [insertquotation] not defined。(查看:C:\xampp\procurement\resources\views\quotation.blade.php) 那是因为route()功能是根据路由名称生成URL。将route() 更改为url()

以上是关于此路由不支持 post 方法的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 - 此路由不支持 POST 方法。支持的方法:删除

此路由不支持 POST 方法。支持的方法:GET、HEAD。但我只能使用 post 方法

此路由不支持 GET 方法。支持的方法:POST。拉拉维尔 8

错误:此路由不支持 POST 方法。支持的方法:GET、HEAD。 - 使用 laravel livewire

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

此路由不支持 PUT 方法。支持的方法:GET、HEAD、POST。在 laravel 中