2017-09-17 8 views
-2

データベースからデータを取得するためのフィルタを作成しました。私は、GETメソッドを使用する場合、私がエラーを取得するPOSTメソッドではなく動作します:Laravel 5.5 - POSTメソッドを使用するとMethodNotAllowedHttpExceptionが発生する

Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

私は解決策を探して時間を費やしたが、私はここで何かが欠けていますように思えます。

テストでは、結果をルートに直接表示しようとしましたが、それでも同じ問題です。

これは機能します。

<?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

投稿をどのようにテストしていますか?あなたは実際に投稿要求を作成していますか、それともgetと同じ方法でテストしていますか? – FuzzyTree

答えて

0

この

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

は常にあなたがそれにいくつかのフォームデータをポストする必要がGETようなので、あなたがブラウザで直接アクセスすることはできませんRequestのインスタンスでなければなりません。だから、それはあなたが何かに名前を変更方が良いでしょう、多分同じよう:

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メソッドを使用してそのURLにリクエストを行うと、POSTメソッドハンドラのみを定義したため、MethodNotAllowedHttpException例外が発生します。

0

{{csrf_field()}}を忘れたようです。これをフォームに追加します。

csrfを使用せずにデータを送信する場合、laravel 5.5にこのエラーが表示されます。

0

投稿のルートを書いている場合は、テストするときにデータをページに投稿していることを確認してください。そうでない場合はエラーが発生します。

投稿ルートは単にURLを呼び出してテストすることはできません。方法は投稿する必要があります。あなたが郵便配達人を使用してルートURIをチェックするなら、それはうまくいくでしょう。

関連する問題