Heim > Fragen und Antworten > Hauptteil
Ich habe eine Löschroute Inertia.js, sodass, wenn ich ein Element lösche, es zurück zu der Seite weitergeleitet wird, auf der ich mich befinde. Dies ruft jedoch nicht die Funktion onSuccess() in der Inertia-Zerstörungsroute auf.
示例.vue
deleteSubmit(id) { this.accountsDataTable.destroy(); Inertia.destroy(route('installers.destroy', {id: id}), {}, { preserveState: true, onSuccess: () => { this.accountsDataTable = $('#table').DataTable({ columnDefs: [{ target: 1 }] }); } }) },
ExampleController.php
//Validate the request //Create the installer //Redirect back on success return redirect()->route('installers.index')->with('success', 'Installer was successfully deleted.');
Allerdings wird die Datentabelle nicht so neu erstellt, wie ich es möchte. So sah es vorher aus:
Richtiges Bild
Die Situation nachist wie folgt:
Bildfehler
Ich habe versucht, den Controller-Code zu ändern:
return redirect()->back()->with('success', 'Installer was successfully deleted');
Aber die Datentabelle wird immer noch nicht so angezeigt, wie sie sollte.
P粉5390555262023-12-27 00:12:17
1:在控制器中使用消息数据设置重定向。
return redirect()->back()->with([ 'messaage' => 'Installer was successfully deleted', ])
2: HandleInertiaRequests 中间件。
public function share(Request $request) { return array_merge(parent::share($request), [ 'flash' => [ 'message' => fn () => $request->session()->get('message'), ], ]); }
3:在组件中。
<template> {{ $page.props.flash.message }} </template> <script setup> import { usePage } from '@inertiajs/inertia-vue3' const message = usePage().props.value.flash.message </script>
文档:https://inertiajs.com/shared-data