Heim  >  Fragen und Antworten  >  Hauptteil

Das Löschen einer Route in Inertia.js kann den onSuccess()-Rückruf nicht auslösen

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粉738346380P粉738346380298 Tage vor449

Antworte allen(1)Ich werde antworten

  • P粉539055526

    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

    Antwort
    0
  • StornierenAntwort