2016-04-16 13 views
0

Ich erhalte den Fehler MethodNotAllowedException, wenn ich versuche, eine PATCH Anfrage an meinen Controller zu senden. Es tritt nur auf meiner verschachtelten Route auf, alle anderen Routen, die die PATCH Anfrage ausführen, funktionieren großartig.Formularmodellbindung auf verschachtelten Routen - PATCH kann nicht zurückgegeben werden - Rückgabe MethodNotAllowedException on RouteCollection on Line 219

routes.php:

Route::resource('customers.aircraft','AircraftController'); 

meine Form:

Form::model($aircraft, ['method' => 'PATCH', 'class' => 'form-horizontal', 'action' => ['[email protected]', $aircraft->id]]) 

Jedes Flugzeug an einen Kunden gehört. Meine URL sieht wie folgt aus:

example.com/customers/5/aircraft/6/edit 

Was ich in der Adressleiste zu beobachten, wenn ich die Fehlermeldung erhalten, ist dies:

example.com/customers/6/aircraft 

Ich habe festgestellt, dass dies nicht durch die Steuerung verursacht werden können, weil die allererste Zeile in meiner @update Methode dd($request); ist und es nicht so weit kommt. Ich nehme an, dass das Problem ist, dass die Route nicht die Informationen erhält, die sie benötigt, um meine Anfrage zu leiten, sie nimmt offensichtlich die aircraft_id und verwendet sie als customer_id, aber ich kann nicht herausfinden, wie oder warum.

Ich habe dies versucht:

Form::model($aircraft, ['method' => 'PATCH', 'class' => 'form-horizontal', 'action' => ['[email protected]', [$customer_id, $aircraft->id]]]) 

Zu denken, dass es die customer_id benötigt durch geschickt werden, aber das hat nicht funktioniert. Ich bin ziemlich neu zu Laravel, also erwarte ich, dass dies nur ein Mangel an Wissen ist, aber nichts auf Stackoverflow, Laravel oder Laracasts Websites haben mir bisher geholfen.

Antwort

0

Try Put() -Methode zu verwenden:

Form::model($aircraft, ['method' => 'PUT', 'class' => 'form-horizontal', 'action' => ['[email protected]', $aircraft->id]]) 

für Route :: Ressource sollte die Update-Methode url so aussehen:

example.com/aircraft/6 

public function update(AircraftRequest $request, $aircraft_id) 
{ 
    $data = $request->all(); 
    dd($data['registration']); 
    $request['registration'] = strtoupper($request['registration']); 
    $aircraft->findOrFail($aircraft_id)->update($request->all()); 
    return redirect()->action('[email protected]', $aircraft_id); 
} 

so versuchen customer_id in versteckten Eingang zu senden. Lassen Sie mich wissen, wenn es funktioniert

+0

Ich habe das auch versucht, keine Liebe. –

+0

ich meine Antwort bearbeitet, bitte überprüfen Sie es – BKF

+0

immer noch das gleiche Ergebnis zu erzielen –