recherche

Maison  >  Questions et réponses  >  le corps du texte

La suppression d'une route dans Inertia.js ne peut pas déclencher le rappel onSuccess()

J'ai une route de suppression Inertia.js afin que lorsque je supprime un élément, il soit redirigé vers la page sur laquelle je me trouve. Cependant, cela n’appelle pas la fonction onSuccess() dans la route de destruction Inertia.

示例.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.');

Cependant, le tableau de données n'est pas recréé comme je le souhaite. Voilà à quoi ça ressemblait avant :

Corriger l'image

La situation après

est la suivante :

Erreur d'image

J'ai essayé de changer le code du contrôleur en :

return redirect()->back()->with('success', 'Installer was successfully deleted');

Mais le tableau de données ne s'affiche toujours pas comme il le devrait.

P粉738346380P粉738346380379 Il y a quelques jours486

répondre à tous(1)je répondrai

  • P粉539055526

    P粉5390555262023-12-27 00:12:17

    1 : Configurez la redirection dans le contrôleur à l'aide des données de message.

    return redirect()->back()->with([
        'messaage' => 'Installer was successfully deleted',
    ])
    

    2 : Middleware HandleInertiaRequests.

    public function share(Request $request)
    {
        return array_merge(parent::share($request), [
            'flash' => [
                'message' => fn () => $request->session()->get('message'),
            ],
        ]);
    }
    

    3 : Dans le composant.

    <template>
    {{ $page.props.flash.message }}
    </template>
    
    <script setup>
    import { usePage } from '@inertiajs/inertia-vue3'
    
    const message = usePage().props.value.flash.message
    </script>
    

    Documentation : https://inertiajs.com/shared-data

    répondre
    0
  • Annulerrépondre