此路由不支持 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->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