From a450406f4ff98d14d15ae3a76241b67c984bc6a7 Mon Sep 17 00:00:00 2001 From: Brian Hanson Date: Tue, 5 May 2026 09:51:20 -0500 Subject: [PATCH 1/4] Fix backup download --- .../components/utilities/DatabaseBackup.vue | 42 +++++++++++++------ resources/js/composables/useCraftData.ts | 2 + .../Utilities/DbBackupController.php | 12 +++--- src/Http/Middleware/HandleInertiaRequests.php | 2 + 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/resources/js/components/utilities/DatabaseBackup.vue b/resources/js/components/utilities/DatabaseBackup.vue index 53f22b01b22..e02483a17fe 100644 --- a/resources/js/components/utilities/DatabaseBackup.vue +++ b/resources/js/components/utilities/DatabaseBackup.vue @@ -2,17 +2,29 @@ import {t} from '@craftcms/cp/utilities/translate.ts.mjs'; import dbBackupController from '@actions/Utilities/DbBackupController'; import {useForm} from '@inertiajs/vue3'; - import type CraftCheckbox from '@craftcms/cp/src/components/checkbox/checkbox'; + import CraftCheckbox from '@craftcms/cp/vue/CraftCheckbox.vue'; + import {useTemplateRef} from 'vue'; + import useCraftData from '@/composables/useCraftData'; const form = useForm({ - downloadBackup: false, + downloadBackup: true, }); + const {csrfTokenValue, csrfTokenName} = useCraftData(); + const formRef = useTemplateRef('formRef'); + function handleSubmit() { form.clearErrors(); - form.submit(dbBackupController(), { - onError: (e) => { - console.log('uh oh'); + + // If downloading, submit form natively to handle file response + if (form.downloadBackup) { + formRef.value?.submit(); + return; + } + + form.post(dbBackupController().url, { + onSuccess: () => { + form.reset(); }, }); } @@ -20,16 +32,20 @@