From 92b66f88b1ce4d039e17e0d3bd238749a29fd806 Mon Sep 17 00:00:00 2001 From: fomichev Date: Thu, 16 Jan 2025 10:16:08 +0300 Subject: [PATCH] =?utf8?q?=D0=9E=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20=D1=83?= =?utf8?q?=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B8=20=D1=80?= =?utf8?q?=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?utf8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../controllers/StoresTypeListController.php | 21 ++++----- erp24/web/js/crud/stores-type-list/index.js | 45 ++++++++++++++++--- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/erp24/controllers/StoresTypeListController.php b/erp24/controllers/StoresTypeListController.php index a695d486..474cfec6 100644 --- a/erp24/controllers/StoresTypeListController.php +++ b/erp24/controllers/StoresTypeListController.php @@ -41,10 +41,10 @@ class StoresTypeListController extends Controller { $model = new StoresTypeList(); $editId = $this->request->post('editId'); - $deleteId = $this->request->post('deleteId'); if ($model->load($this->request->post())) { - if (!empty($editId) && empty($deleteId)) { + if (!empty($editId)) { + // Редактирование $existingModel = StoresTypeList::findOne($editId); if ($existingModel) { $existingModel->type_name = $model->type_name; @@ -53,7 +53,7 @@ class StoresTypeListController extends Controller Yii::$app->session->setFlash('success', 'Запись успешно обновлена.'); return $this->redirect(['index']); } else { - // Yii::$app->session->setFlash('error', 'Ошибка сохранения.'); + Yii::$app->session->setFlash('error', 'Ошибка сохранения.'); } } } else { @@ -62,18 +62,9 @@ class StoresTypeListController extends Controller Yii::$app->session->setFlash('success', 'Новая запись успешно создана.'); return $this->redirect(['index']); } else { - // Yii::$app->session->setFlash('error', 'Ошибка сохранения.'); + Yii::$app->session->setFlash('error', 'Ошибка сохранения.'); } } - - } - - if (!empty($deleteId)) { - $deleteModel = StoresTypeList::findOne($deleteId); - if ($deleteModel && $deleteModel->delete()) { - Yii::$app->session->setFlash('success', 'Запись успешно удалена.'); - return $this->redirect(['index']); - } } $dataProvider = new ActiveDataProvider([ @@ -161,6 +152,10 @@ class StoresTypeListController extends Controller { $this->findModel($id)->delete(); + if (Yii::$app->request->isAjax) { + return $this->asJson(['success' => true, 'message' => 'Запись успешно удалена.']); + } + return $this->redirect(['index']); } diff --git a/erp24/web/js/crud/stores-type-list/index.js b/erp24/web/js/crud/stores-type-list/index.js index 43cbad4b..7e2b2972 100644 --- a/erp24/web/js/crud/stores-type-list/index.js +++ b/erp24/web/js/crud/stores-type-list/index.js @@ -7,6 +7,8 @@ document.addEventListener('DOMContentLoaded', function () { const cancelBtn = document.getElementById('cancel-btn'); const saveBtn = document.getElementById('save-btn'); const editBtn = document.getElementById('edit-btn'); + let typeNameVar = ''; + let idData = ''; list.addEventListener('click', function (event) { const target = event.target; @@ -19,8 +21,9 @@ document.addEventListener('DOMContentLoaded', function () { if (data.error) { alert(data.error); } else { - typeNameField.value = data.type_name; - editIdInput.value = id; + typeNameVar = data.type_name; + idData = id; + editIdInput.value = ''; deleteIdInput.value = ''; document.querySelectorAll('.list-group-item').forEach(item => { @@ -35,27 +38,55 @@ document.addEventListener('DOMContentLoaded', function () { }); editBtn.addEventListener('click', function () { - const id = editIdInput.value; + + + const id = idData; + if (id) { - saveBtn.click(); + editIdInput.value = id; + typeNameField.value = typeNameVar; } else { alert('Выберите запись для редактирования.'); } }); deleteBtn.addEventListener('click', function () { - const id = editIdInput.value; + const id = idData; + if (id && confirm('Вы уверены, что хотите удалить запись?')) { + fetch(`/stores-type-list/delete?id=${id}`, { + method: 'POST', + headers: { + 'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]').content // CSRF-токен + }, + }) + .then(response => { + if (response.ok) { + alert('Запись успешно удалена.'); + location.reload(); + } else { + alert('Ошибка при удалении записи.'); + } + }) + .catch(error => { + console.error('Ошибка:', error); + alert('Ошибка при удалении записи.'); + }); + editIdInput.value = ''; - deleteIdInput.value = id; - saveBtn.click(); + deleteIdInput.value = ''; + typeNameVar = ''; + idData = ''; } + }); cancelBtn.addEventListener('click', function () { typeNameField.value = ''; editIdInput.value = ''; deleteIdInput.value = ''; + typeNameVar = ''; + idData = ''; deleteBtn.classList.add('d-none'); editBtn.classList.add('d-none'); document.querySelectorAll('.list-group-item').forEach(item => { -- 2.39.5