Итак, у меня есть проект SPA Laravel и страница продуктов с кнопкой удаления, которая отлично работает. Я использую следующий код. внутри «Index.vue»
Код: Выделить всё
import { ref } from 'vue';
import { Inertia } from '@inertiajs/inertia';
import { Head, Link } from '@inertiajs/vue3';
import ConfirmationModal from '@/Components/ConfirmationModal.vue';
export default {
components: {
ConfirmationModal,
Link
},
props: {
products: Array,
flash: Object,
},
setup(props) {
const showModal = ref(false);
const productIdToDelete = ref(null);
const products = ref(props.products); // Add this line
const showDeleteConfirmation = (id) => {
productIdToDelete.value = id;
showModal.value = true;
};
const confirmDelete = () => {
if (productIdToDelete.value) {
Inertia.delete(`/products/${productIdToDelete.value}`, {
preserveScroll: true,
onFinish: () => {
closeModal();
// Remove the deleted product from the products array
const index = products.value.findIndex(product => product.id === productIdToDelete.value);
if (index !== -1) {
products.value.splice(index, 1);
}
},
});
}
};
const closeModal = () => {
showModal.value = false;
};
return {
showModal,
showDeleteConfirmation,
confirmDelete,
closeModal,
products, // Make sure to return products here
};
},
};
Код: Выделить всё
public function destroy(Product $product)
{
$product->delete();
return response(['id' => $product->id], Response::HTTP_OK);
}
Проблема в том, что когда я это делаю, он отображает модальное окно с помощью (например)
Код: Выделить всё
{"id":92}
Код: Выделить всё
return response(['id' => $product->id], Response::HTTP_OK);
Я Я перепробовал много разных вариантов, но не могу найти, как это отсортировать.
Есть предложения?
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/781 ... l-with-spa
Мобильная версия