Das Löschen einer Route in Inertia.js kann den onSuccess()-Rückruf nicht auslösen
P粉738346380
P粉738346380 2023-12-26 08:57:49
0
1
471

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 nach

ist 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粉738346380
P粉738346380

Antworte allen(1)
P粉539055526

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage