Löschen von Daten aus der Datenbank mit Laravel 5.4
Ich bin sozusagen neu auf dem Laravel framework, und ich bin Gebäude nur einen einfachen blog. Ich kann einen blog zu erstellen, zeigen einen blog und zeigen Sie eine übersicht über alle blogs. Nun würde ich gerne löschen einen blog. Also, ich habe erstellt eine Schaltfläche zum löschen in meiner Sicht mit einer route, link pass auch die id des Artikels. Dann, in meinem Routen-Datei, die ich geben Sie eine Anfrage löschen und eine controller-Methode. In der Methode finde ich die id, und versuchen, löschen Sie die Zeile mit der id, die ich in der route angegebenen/view.
Funktioniert das nicht. Stattdessen aktivieren Sie die vernichten/löschen Methode zeigt der Artikel, anstatt es zu löschen und aktiviert die show-Methode anstelle der delete-Methode. Kann jemand mir helfen, Was mache ich falsch?
View.blade.php
<a href="{{route('nieuws.destroy', ['id' => $blog->id])}}" onclick="return confirm('Weet je dit zeker?')">
<i class="fa fa-trash"></i>
</a>
Route
Route::group(['middleware' => 'auth'], function () {
Route::get('/aanvragen', 'aanvragenController@index')->name('aanvragen.index');
Route::get('/logout' , 'Auth\LoginController@logout')->name('logout');
Route::get('/nieuws/toevoegen', 'blogController@create')->name('blogs.add');
Route::post('/nieuws/store', 'blogController@store')->name('nieuws.store');
Route::delete('/nieuws/{id}', 'blogController@destroy')->name('nieuws.destroy');
});
Route::get('/nieuws', 'blogController@index')->name('blogs.index');
Route::get('/nieuws/{blog}', 'blogController@show')->name('blogs.show');
Controller-Methoden
Löschen/Zerstören
public function destroy($id) {
$blog = Blog::find($id);
$blog->delete();
return redirect('/nieuws');
}
Zeigen
public function show(Blog $blog) {
dd('show');
return view('blogs.show', compact('blog'));
}
InformationsquelleAutor Gijsberts | 2017-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
delete()
route erfordert, dass Sie die POST Ihre Daten.HTML-Formulare unterstützt nur GET und POST, andere Methoden wie DELETE, PUT, etc, werden nicht unterstützt, deshalb Laravel nutzt die
_method
vorzutäuschen, um Methoden, die nicht unterstützt von HTML-Formularen.Du nicht verwenden möchten, HOLEN Sie sich in diesen Fällen, da jemand senden kann ein Benutzer die url (http://yoursite.com/blog/delete/1) in einem CHAT oder per E-Mail. Die user-Klicks und der blog ist Weg.
Definieren Sie Ihre route, wie es wäre, wenn die Verwendung des Ressourcen-Controller, also:
Und entweder ein Formular verwenden, das mit der delete-Methode:
Oder tun Sie etwas javascript-Magie als link SR_ veröffentlicht in seinem Kommentar auf Ihre OP.
Eins noch, fügen Sie eine Art von Bestätigung, in Ihr zerstören-Aktion. Gerade jetzt, wenn Sie eine nicht vorhandene id, oder sonst etwas, bekommen Sie einen 500-Fehler, sondern Sie wollen eine 404.
InformationsquelleAutor Robert
Ich bin auch ein neues Laravel, aber ich machte es Arbeit auf diese Weise:
(Ich verwende 'Artikel' als Modell den Namen und die
resource
"Methode" in der route steht für eine Reihe von nützlichen Routen, einschließlich der Strecke, die Sie schrieb)Controller:
Route:
Aber ich denke, das problem liegt in der Standard-definition von "Datenbank" den Namen Ihres Modells. Laravel wird davon ausgegangen, dass Sie eine Datenbank mit dem Namen blogs hast du da ein Modell namens "blog". Sind Sie mit dem Datenbank Namen richtig?
Wie über das ändern der Ansicht in dieser:
<form action="{{ url('admin/blog/'.$blog->id) }}" method="POST" style="display: inline;"> {{ method_field('DELETE') }} {{ csrf_field() }} <button type="submit" class="btn btn-danger">delete</button> </form>
InformationsquelleAutor Tan Yuanhong
Ich glaube, Sie brauchen, um zu zerstören, aktualisieren Sie Ihre Funktion wie:
Und aktualisieren Sie Ihre anzeigen-code wie:
Hoffen, dass diese Arbeit für Sie!
@show
- Methode anstelle der@destroy
MethodeWas ist das Ergebnis der blog in der show-Methode ?
Nur die details der blog mit Daten aus der Datenbank. Für Testzwecke verwende ich nun die Funktion datadump aus, um zu sehen, wenn es aktiviert den show-Methode.
InformationsquelleAutor AddWeb Solution Pvt Ltd
Verwenden
DELETE
HTTP-Verb, sollte das Formular besteht aus denPOST
Methode und Einstellungen für diemethod_field('DELETE')
Beispiel:
InformationsquelleAutor Ru Chern Chong