瀏覽代碼

数据仓库 store/update/delete 方法允许返回 JsonResponse 对象

jqh 4 年之前
父節點
當前提交
8188788d67
共有 3 個文件被更改,包括 23 次插入7 次删除
  1. 3 3
      src/Contracts/Repository.php
  2. 16 0
      src/Form.php
  3. 4 4
      src/Repositories/Repository.php

+ 3 - 3
src/Contracts/Repository.php

@@ -77,7 +77,7 @@ interface Repository
      *
      * @param Form $form
      *
-     * @return mixed
+     * @return int|bool|\Dcat\Admin\Http\JsonResponse
      */
     public function store(Form $form);
 
@@ -95,7 +95,7 @@ interface Repository
      *
      * @param Form $form
      *
-     * @return bool
+     * @return bool|\Dcat\Admin\Http\JsonResponse
      */
     public function update(Form $form);
 
@@ -105,7 +105,7 @@ interface Repository
      * @param Form  $form
      * @param array $deletingData
      *
-     * @return mixed
+     * @return mixed|\Dcat\Admin\Http\JsonResponse
      */
     public function delete(Form $form, array $deletingData);
 

+ 16 - 0
src/Form.php

@@ -11,6 +11,7 @@ use Dcat\Admin\Form\Concerns;
 use Dcat\Admin\Form\Condition;
 use Dcat\Admin\Form\Field;
 use Dcat\Admin\Form\NestedForm;
+use Dcat\Admin\Http\JsonResponse;
 use Dcat\Admin\Support\Helper;
 use Dcat\Admin\Traits\HasBuilderEvents;
 use Dcat\Admin\Traits\HasFormResponse;
@@ -568,6 +569,11 @@ class Form implements Renderable
 
             $result = $this->repository->delete($this, $data);
 
+            // 返回 JsonResponse 对象,直接中断后续逻辑
+            if ($result instanceof JsonResponse) {
+                return $this->sendResponse($result);
+            }
+
             if ($response = $this->callDeleted($result)) {
                 return $this->sendResponse($response);
             }
@@ -628,6 +634,11 @@ class Form implements Renderable
 
             $id = $this->repository->store($this);
 
+            // 返回 JsonResponse 对象,直接中断后续逻辑
+            if ($id instanceof JsonResponse) {
+                return $this->sendResponse($id);
+            }
+
             $this->builder->setResourceId($id);
 
             if (($response = $this->callSaved($id))) {
@@ -804,6 +815,11 @@ class Form implements Renderable
 
             $updated = $this->repository->update($this);
 
+            // 返回 JsonResponse 对象,直接中断后续逻辑
+            if ($updated instanceof JsonResponse) {
+                return $this->sendResponse($updated);
+            }
+
             if ($response = $this->callSaved($updated)) {
                 return $this->sendResponse($response);
             }

+ 4 - 4
src/Repositories/Repository.php

@@ -124,7 +124,7 @@ abstract class Repository implements RepositoryInterface, TreeRepository
      *
      * @param Form $form
      *
-     * @return mixed
+     * @return int|bool|\Dcat\Admin\Http\JsonResponse
      */
     public function store(Form $form)
     {
@@ -136,7 +136,7 @@ abstract class Repository implements RepositoryInterface, TreeRepository
      *
      * @param Form $form
      *
-     * @return array
+     * @return array|\Illuminate\Contracts\Support\Arrayable
      */
     public function updating(Form $form)
     {
@@ -148,7 +148,7 @@ abstract class Repository implements RepositoryInterface, TreeRepository
      *
      * @param Form $form
      *
-     * @return bool
+     * @return bool|\Dcat\Admin\Http\JsonResponse
      */
     public function update(Form $form)
     {
@@ -161,7 +161,7 @@ abstract class Repository implements RepositoryInterface, TreeRepository
      * @param Form  $form
      * @param array $deletingData
      *
-     * @return mixed
+     * @return bool|int|\Dcat\Admin\Http\JsonResponse
      */
     public function delete(Form $form, array $deletingData)
     {