Browse Source

简化Show功能使用

jqh 5 years ago
parent
commit
813b69cb8c

+ 1 - 3
src/Controllers/PermissionController.php

@@ -244,9 +244,7 @@ class PermissionController extends Controller
      */
     protected function detail($id)
     {
-        $show = new Show(new Permission());
-
-        $show->key($id);
+        $show = new Show($id, new Permission());
 
         $show->id;
         $show->slug;

+ 3 - 3
src/Controllers/RoleController.php

@@ -129,7 +129,7 @@ class RoleController extends Controller
      */
     protected function detail($id)
     {
-        return Show::make(new Role('permissions'), function (Show $show) use ($id) {
+        return Show::make($id, new Role('permissions'), function (Show $show) {
             $show->id;
             $show->slug;
             $show->name;
@@ -143,10 +143,10 @@ class RoleController extends Controller
             $show->created_at;
             $show->updated_at;
 
-            if ($id == RoleModel::ADMINISTRATOR_ID) {
+            if ($show->key() == RoleModel::ADMINISTRATOR_ID) {
                 $show->disableDeleteButton();
             }
-        })->key($id);
+        });
     }
 
     /**

+ 3 - 6
src/Controllers/UserController.php

@@ -140,11 +140,8 @@ class UserController extends Controller
         $grid->quickSearch(['id', 'name', 'username']);
 
         $grid->id->bold()->sortable();
-
         $grid->username;
-
         $grid->name;
-
         $grid->created_at;
 
         return $grid;
@@ -159,7 +156,7 @@ class UserController extends Controller
      */
     protected function detail($id)
     {
-        return Show::make(new Administrator('roles'), function (Show $show) use ($id) {
+        return Show::make($id, new Administrator('roles'), function (Show $show) {
             $show->id;
             $show->username;
             $show->name;
@@ -209,10 +206,10 @@ class UserController extends Controller
                 return $tree->render();
             });
 
-            if ($id == AdministratorModel::DEFAULT_ID) {
+            if ($show->key() == AdministratorModel::DEFAULT_ID) {
                 $show->disableDeleteButton();
             }
-        })->key($id);
+        });
     }
 
     /**

+ 2 - 2
src/Scaffold/stubs/controller.stub

@@ -38,9 +38,9 @@ class DummyClass extends AdminController
      */
     protected function detail($id)
     {
-        return Show::make(new DummyModel(), function (Show $show) {
+        return Show::make($id, new DummyModel(), function (Show $show) {
             {show}
-        })->key($id);
+        });
     }
 
     /**

+ 21 - 5
src/Show.php

@@ -89,15 +89,31 @@ class Show implements Renderable
     /**
      * Show constructor.
      *
+     * @param mixed $id                                $id
      * @param Model|Builder|Repository|array|Arrayable $model
-     * @param \Closure                         $builder
-     */
-    public function __construct($model = null, ?\Closure $builder = null)
-    {
-        $this->initModel($model);
+     * @param \Closure                                 $builder
+     */
+    public function __construct($id = null, $model = null, ?\Closure $builder = null)
+    {
+        switch (func_num_args()) {
+            case 1:
+                $model = $id;
+                break;
+            case 2:
+                if (is_scalar($id)) {
+                    $this->key($id);
+                } else {
+                    $builder = $model;
+                    $model = $id;
+                }
+                break;
+            default:
+                $this->key($id);
+        }
 
         $this->builder = $builder;
 
+        $this->initModel($model);
         $this->initPanel();
         $this->initContents();