Laravel 5.4 - Aktualisierung einer Ressource
Baue ich einen blog-post zu lernen, Laravel 5.4 und bin kämpfen, um zu finden, Beispiele dafür, wie ein update Posten überall.
Mein Formular ist wie folgt
<form method="POST" action="/posts/{{ $post->id }}/edit">
{{ csrf_field() }}
<div class="form-group">
<label for="title">Title</label>
<input name="title" type="text" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" value="{{ $post->title }}" required>
</div>
<div class="form-group">
<label for="description">Description</label>
<input name="description" type="text" class="form-control" id="exampleInputPassword1" value="{{ $post->title }}" required>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Update</button>
</div>
</form>
Meiner Strecken sind wie folgt
Route::get('/posts/{post}/edit', 'PostsController@edit');
Route::patch('/posts/{post}', 'PostsController@update');
Und meine controller-Methoden sind
public function edit( Post $post )
{
return view('posts.edit', compact('post'));
}
public function update(Request $request, Post $post )
{
Post::where('id', $post)->update($request->all());
return redirect('home');
}
Bekomme ich eine MethodNotAllowedHTTPException
Fehler, aber bin mir nicht sicher, welches Teil /Teile dieses ich bin immer falsch.
Ich nehme an es muss der Punkt, an dem ich bin mit der PATCH-Funktion, oder möglicherweise nur die Art, wie ich bin-Masse-Zuweisung der neuen Werte. Jegliche Hilfe würde sehr geschätzt werden.
Sollten Sie
<input name="_method" type="hidden" value="PATCH">
zu Ihrer form.InformationsquelleAutor rushtoni88 | 2017-07-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
sollten Sie verwenden
als Ihre Formularfeld
- und wechselklage zu
wie diese:
Das könnte sein, weil der controller Sie verwenden
$request->all();
so ist es versucht, zu aktualisieren CSRF-token Felder der Tabelle, die nicht vorhanden sind.InformationsquelleAutor Mohammad b
Gibt es ein paar Dinge, die Sie verpasst haben.
Erstens, wie @Maraboc wies darauf hin, in der Kommentare, die Sie hinzufügen müssen, um spoofing-Methode als standard-HTML-Formulare erlauben nur für
GET
undPOST
Methoden:oder
https://laravel.com/docs/5.4/routing#form-method-spoofing
Dann benötigen Sie auch das weglassen der "Bearbeiten" - uri in Ihren Formularen Aktion:
oder
https://laravel.com/docs/5.4/controllers#resource-controllers
(scrollen Sie nach unten ein wenig, um die Aktionen Behandelt, die Durch Ressourcen-Controller Abschnitt)
Können Sie auch finden es hilfreich zu beobachten, https://laracasts.com/series/laravel-5-from-scratch/episodes/10
Hoffe, das hilft!
InformationsquelleAutor Ross Wilson