Delete-Methode in den Axios, Laravel und VueJS
Ich bin versucht, senden Sie eine Anfrage löschen, die über axios zu laravel wie folgt:
axios.delete('api/users/' + this.checkedNames)
.then((response) => {
console.log(response)
}, (error) => {
//error callback
})
Nun von axios-Dokumentation habe ich gelesen, dass für die Anfrage löschen wir sollte mit einer configObject so dass die oben genannten könnte umgeschrieben werden, etwa so:
axios.delete('api/users/', {params: {ids:
this.checkedNames})
.then((response) => {
console.log(response)
}, (error) => {
//error callback
})
Habe ich dann Route::resource('users', 'UsersController');
im api.php also die default-route löschen:
DELETE| api/users/{user}| users.destroy
und der controller-Methode ist:
|App\Http\Controllers\UsersController@destroy
Ich bin in der Lage zu löschen wie erwartet ein user, wenn ich einen einzigen id-sagen wir mal-api/users/12, es wird korrekt gelöscht, aber wenn ich versuchen Sie, übergeben Sie das array über die Dinge kompliziert.
wenn ich versuche so pro axios Dokumentation axios.delete('api/users/', {params: {id: this.checkedNames}})
es sieht ich bin das senden dieser http://lorillacrud.dev/api/users?id[]=21&id[]=20
aber ich bekomme 405 Methode nicht erlaubt.
wenn ich versuche axios.delete('api/users/' + this.checkedNames )
bekomme ich http://lorillacrud.dev/api/users/20,21
so in mein destroy-Methode, die ich greifen konnte die ids und löschen, aber ich Frage mich, ob dies der richtige Weg, es zu tun?
update
Ich schien ich es zu arbeiten, aber ich bin nicht zu verstehen, so dass jede Hilfe immer noch geschätzt, um ein Gefühl von dem, was ich bin, tatsächlich macht die Arbeit!
So, wenn änderung:
axios.delete('api/users/destroy', {params: {'id': this.checkedNames})
und in mein destroy-Methode:
if ($request->id) {
foreach ($request->id as $id) {
User::destroy($id);
}
}
User::destroy($id);
}
So...
//not deletes the user
axios.delete('api/users/destroy', {params: {id: id}})
//ok deletes the users when using request->id in a for loop in the destroy laravel method.
axios.delete('api/users/destroy', {params: {ids: this.checkedNames}})
//ok deletes one user
axios.delete('api/users/' + id)
sorry Leute, aber ich habe eine Menge Verwirrung, warum und was !!!
Namens der route ist user.destroy
warum funktioniert es, wenn ich ein array übergeben und es funktioniert nicht, wenn ich einen einzigen Wert, warum Umgekehrt die route mit der Methode delete wird nicht gelöscht, wenn ein array übergeben ???
Keinen Unterschied zwischen der Verwendung api/users/destroy
vs api/users
nur?
Vielen Dank für jede Hilfe!
InformationsquelleAutor Lorenzo Beltrame | 2017-09-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es wegen der Signaturen. Die Standard -
delete
route bei der VerwendungResource
erwartet einen einzigen parameter. Also, wenn Sie tun:Ihnen fehlen erforderlich parameter. Die route ist
In der Regel, wenn Sie gehen, um streunende Weg von der default-Verhalten, es ist empfohlen erstellen Sie Ihre eigene Funktion. So könnte man belassen Sie die Standard -
destroy($id)
Funktion wie löschen Sie einen einzelnen Eintrag und schreiben Sie eine neue Funktion löschen viele. Starten Sie, indem Sie eine route für SieDann definieren Sie die Funktion um handle es
Zusammenzufassen, dein problem kam von der route definition. Ihre route von Axios nicht mit der route definition von Laravel, daher der 405.
InformationsquelleAutor EddyTheDove
Wurde ich mit einer Frage zu senden Daten als Modell bei der Herstellung Anfrage löschen. Ich fand einen fix wie folgt:
InformationsquelleAutor Ravi Anand
Ich auch erlebt das gleiche problem. Dies funktioniert für mich:
Mit
axios.post()
stattaxios.delete
, und senden_method
"löschen"InformationsquelleAutor Elib
Löschen von Benutzern in der Reihe
Andere gute option ist die Umwandlung von javascript-array zu string, und übergeben Sie die erforderlichen parameter, statt der übergabe-Objekt. Hier das Beispiel:
In Vue.js 2.5.17+
//Use the javascript method JSON.stringify to convert the array into string:
axios.delete('api/users/' + JSON.stringify(this.checkedNames))
In Laravel 5.3+
Löschen Einzel-Benutzer-id
Geben Sie einfach die id. Sie brauchen nicht zu konvertieren.
In Vue.js 2.5.17+
In Laravel 5.3+
Können Sie die Namen der parameter, wie Sie wünschen:
user
,id
,item
,...InformationsquelleAutor Jose Seie