2017-01-13 3 views
0

Ich versuche, eine PUT-Anfrage auf meiner Form zu tun Laravel verwenden, und es ist ein MethodNotAllowedException Rückkehr, ist die Form, wie folgt:MethodNotAllowedException auf PUT-Anfrage Laravel

<form role="form" method="POST" action="{{ route('negocio.update', $negocio->id) }}" enctype="multipart/form-data">

{{ method_field('PUT') }}

</form>

Und meine Route wird wie folgt registriert:

Route::put('/update/{id}', ['as' => 'negocio.update', 'uses' => 'client\[email protected]']);

Mit dem php artisan route:list Befehl gibt mir die folgende Route:

| PUT | update/{id} | negocio.update | App\Http\Controllers\client\[email protected] | web

Kann jemand mir erklären, was mache ich falsch? Ich habe bereits auf verschiedenen Seiten gesucht, aber keine Lösung.

* UPDATE:

ich den Browser-Inspektor geöffnet, um zu sehen, welche Art von Anfrage tat, und er versucht, einen anderen Weg für den Zugriff auf get-Methode, die ich registriert habe nicht also, warum der Fehler Anzeige, aber die Sache ist, ich weiß nicht, warum das Formular an eine andere URL übermittelt.

+0

Worin besteht der gerenderte Inhalt von {{route ('negocio.update', $ negocio-> id)}}? Ist es die GET-Methode, die Sie erwähnt haben? –

+0

Der Render-Inhalt ist zum Beispiel: '(Basispfad)/Update/2' ... aber ich habe gerade das Problem behoben, aber ich weiß nicht, warum es nicht funktionierte, die vorherige Anfrage, die zum" PUT "Formular war eine POST-Anfrage, und ich habe es in ein GET geändert, und jetzt funktioniert es ... –

Antwort

1

Wenn die negocio eine Ressourcensteuerung ist, und Sie haben es in der web.php-Datei wie folgt: Route::resource('negocio','NegocioController');, versuchen und tun in so:

<form method="POST" action="{{route('negocio.update', $negocio->id)}}" enctype="multipart/form-data"> 
    {{ method_field('PUT') }}{{csrf_field()}} 
    </form> 

Aber nicht diese verwenden (löschen oder Kommentar it out):

Route::put('/update/{id}', ['as' => 'negocio.update', 'uses' => 'client\[email protected]']); 

Wenn es keine Ressourcensteuerung ist, erklären sie dann in der Route-Datei wie folgt:

Route::put('/update/{id}', '[email protected]')->name('negocio.update'); 

Wenn dies nicht den Trick tun, dann versuchen Sie es mit Post, und lassen Sie die {{method_field('Put') den Trick machen.

Route::post('/update/{id}', '[email protected]')->name('negocio.update'); 

Hoffe das hilft. und wenn ja, bitte sagen Sie uns hier.

+1

Ja, es hat tatsächlich funktioniert, danke! –

+0

Ich bin froh, dass es für Sie arbeitete, Mann. – GabMic