2017-09-17 113 views
-2

我創建了用於從數據庫中獲取數據的過濾器。當我使用GET方法,它的工作原理但POST方法,我得到錯誤:Laravel 5.5 - 使用POST方法時的MethodNotAllowedHttpException

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

我花了幾個小時尋找解決辦法,但好像我在這裏失去了一些東西。

對於測試,我試圖直接在路線中得到結果,但它仍然是同樣的問題。

This Works。

<?php 
use App\test; 
Route::get('/', function() { 
    $test = test::all(); 
return $test; 
}); 

這不起作用。

<?php 
use App\test; 
Route::post('/', function() { 
    $test = test::all(); 
return $test; 
}); 
+1

嘗試清除緩存'php artisan route:clear' – FuzzyTree

+0

@FuzzyTree它沒有幫助。 – User3100

+0

你如何測試帖子?你實際上是在創建一個發佈請求嗎?還是以與獲取相同的方式進行測試? – FuzzyTree

回答

0

use App\test; 
Route::post('/', function() { 
    $test = test::all(); 
return $test; 
}); 

一律爲Request一個實例,所以你不能直接訪問它的瀏覽器,如GET你有某種形式的數據發佈到它。因此,最好將它重命名爲,也許像:

use App\test; 

Route::post('/test', function (Request $request) { 
    $test = test::all(); 
return $test; 
}); 

$request握住你的表單數據

1

Route::get()Route::post()被定義爲指定的HTTP方法途徑處理。

如果只定義了這條路線:

Route::post('/', function() { 
    $test = test::all(); 
    return $test; 
}); 

然後,你必須確保該URL的所有調用使用POST方法。如果您使用GET方法向該網址發送請求,則會得到MethodNotAllowedHttpException異常,因爲您只定義了POST方法處理程序。

0

看起來您可能會忘記{{csrf_field()}}。將此添加到您的表單中。

如果你發佈的數據沒有csrf,在laravel 5.5中你會看到這個錯誤。

0

請注意,如果您正在撰寫發佈路線,在測試時請確保您將數據發佈到網頁,否則會發生錯誤。

帖子路由不能簡單地通過調用url來測試,方法應該是post。如果你使用郵遞員檢查路由URI,它將起作用。

相關問題