wake-up-neo.net

MethodNotAllowedHttpException in Zeile RouteCollection.php 219

Beim Speichern eines Beitrags erhalte ich diese Fehlermeldung

MethodNotAllowedHttpException in RouteCollection.php line 219:

Was kann dieses Problem verursachen?

Routen.php:

Route::get('home', '[email protected]');
Route::get('/', '[email protected]');
Route::get('index', '[email protected]');

Route::get('posts', '[email protected]');
Route::get('post/{slug}/{id}', '[email protected]');
Route::get('posts/sukurti-nauja-straipsni', '[email protected]');
Route::patch('posts/store-new-post', '[email protected]');
Route::get('post/{slug}/{id}/edit', '[email protected]');
Route::patch('posts/{slug}', '[email protected]');


Route::get('tags/{tags}', '[email protected]');
Route::get('categories/{categories}', '[email protected]');

// Authentication routes...
Route::get('auth/login', 'Auth\[email protected]');
Route::post('auth/login', 'Auth\[email protected]');
Route::get('auth/logout', 'Auth\[email protected]');

// Registration routes...
Route::get('auth/register', 'Auth\[email protected]');
Route::post('auth/register', 'Auth\[email protected]');

Ich benutze Laravel 5.1 und kann das für einen Tag nicht herausfinden.

14
feknaz

Da Sie die Methode für das Update des Beitrags auf patch setzen, stellen Sie sicher, dass Sie Ihr Formular öffnen , um diese Methode zu verwenden:

{!! Form::open(['method' => 'patch']) !!}

Wenn Sie nicht die Form-Klasse verwenden, können Sie auch sicherstellen, dass sich ein hidden Element mit dem Namen _method unterhalb des Formulars befindet:

<input name="_method" type="hidden" value="PATCH">

Wenn Sie diese Daten über AJAX senden, fügen Sie der Nutzdatengruppe _method vor dem Senden der Anforderung über POST einen 'PATCH'-Schlüssel hinzu. Einige Browser ( IE 7/8 ) unterstützen PATCH HTTP nicht über XMLHttpRequest

Ihre andere Option ist, stattdessen Ihre Route zu ändern, um POST -Daten zu akzeptieren:

Route::post('posts/store-new-post', '[email protected]');
Route::post('posts/{slug}', '[email protected]');
9
Jeff Lambert

Versuchen Sie, Ihrem Modell Folgendes hinzuzufügen: protected $guarded = ['_token'];

1
PawelW

In meinem Fall gab es am Ende ein zusätzliches "/", so etwas wie: POST/api/clients/Ich habe es gelöscht und es hat funktioniert: POST =/api/clients

Ich hatte auch dieses Problem, aber in meinem Fall stellte sich heraus, dass diese mehreren Routen für dieselbe Controller-Aktion eingerichtet wurden:

Route::get('/',     '[email protected]');
Route::get('posts', '[email protected]');

Das funktionierte gut für GET-Anfragen, aber ich würde mein Formular so einstellen, dass es sich selbst übermittelt - dh. Ich hatte keine Aktion in meinem Formular angegeben - was bedeutete, dass es funktionierte, wenn ich auf /posts war (da ich einen entsprechenden POST Endpunkt für diese Route eingerichtet hatte), aber von der Startseite / aus immer Geben Sie mir die von Ihnen beschriebene MethodNotAllowedHttpException (da keine POST -Datenroute dafür eingerichtet wurde). Es dauerte Ewigkeiten, um herauszufinden, warum die Form manchmal funktionierte und manchmal nicht.

Am Ende habe ich es behoben, indem ich die Route für / in eine Weiterleitung umwandle, wie folgt:

Route::get('/', function(){
    return redirect('posts');
});

... obwohl ich denke, dass explizit eine Aktion auf dem Formular festgelegt wurde (oder auch eine POST - Route für /), hätte die Aufgabe ebenfalls erledigt.

Ich bin neu bei Laravel, daher könnte es andere Ansätze geben, die besser sind als die oben genannten.

0
Nick F

Überprüfen Sie Ihr Formular-Tag

<form action="/path/" method="post">

hier "/Pfad/" sollte "/Pfad " sein, am Ende nicht "/".

0
Ahmet Uğur

Navigieren Sie zu vendor/laravel/framework/src/Illuminate/Foundation/Middleware/VerifyCsrfToken.php und fügen Sie die gewünschte Routenmethode (POST, GET) innerhalb der Funktion isReading () - Methode hinzu.

Hoffe das kann jemandem helfen. 

0
srivat1