jqh 5 năm trước cách đây
mục cha
commit
0b502e5745

+ 39 - 43
src/Controllers/RoleController.php

@@ -2,6 +2,7 @@
 
 namespace Dcat\Admin\Controllers;
 
+use Dcat\Admin\Admin;
 use Dcat\Admin\Auth\Permission;
 use Dcat\Admin\Models\Repositories\Role;
 use Dcat\Admin\Models\Role as RoleModel;
@@ -63,7 +64,7 @@ class RoleController extends Controller
         return $content
             ->header(trans('admin.roles'))
             ->description(trans('admin.edit'))
-            ->body($this->form($id)->edit($id));
+            ->body($this->form()->edit($id));
     }
 
     /**
@@ -130,28 +131,25 @@ class RoleController extends Controller
      */
     protected function detail($id)
     {
-        $show = new Show(new Role());
+        return Admin::show($id, new Role('permissions'), function (Show $show) {
+            $show->id;
+            $show->slug;
+            $show->name;
 
-        $show->setId($id);
+            $show->permissions->width(12)->as(function ($permission) {
+                return collect($permission)->pluck('name');
+            })->label('primary');
 
-        $show->id;
-        $show->slug;
-        $show->name;
+            $show->divider();
 
-        $show->permissions->width(12)->as(function ($permission) {
-            return collect($permission)->pluck('name');
-        })->label('primary');
+            $show->created_at;
+            $show->updated_at;
 
-        $show->divider();
-
-        $show->created_at;
-        $show->updated_at;
-
-        if ($id == RoleModel::ADMINISTRATOR_ID) {
-            $show->disableDeleteButton();
-        }
+            if ($show->getId() == RoleModel::ADMINISTRATOR_ID) {
+                $show->disableDeleteButton();
+            }
 
-        return $show;
+        });
     }
 
     /**
@@ -159,38 +157,36 @@ class RoleController extends Controller
      *
      * @return Form
      */
-    public function form($id = null)
+    public function form()
     {
-        $form = new Form(new Role());
-
-        $form->display('id', 'ID');
+        return Admin::form(new Role('permissions'), function (Form $form) {
+            $form->display('id', 'ID');
 
-        $form->text('slug', trans('admin.slug'))->required()->prepareForSave(function ($value) {
-            return $value;
-        });
-        $form->text('name', trans('admin.name'))->required();
-
-        $form->tree('permissions')
-            ->nodes(function () {
-                $permissionModel = config('admin.database.permissions_model');
-                $permissionModel = new $permissionModel;
+            $form->text('slug', trans('admin.slug'))->required()->prepareForSave(function ($value) {
+                return $value;
+            });
+            $form->text('name', trans('admin.name'))->required();
 
-                return $permissionModel->allNodes();
-            })
-            ->customFormat(function ($v) {
-                if (!$v) return [];
+            $form->tree('permissions')
+                ->nodes(function () {
+                    $permissionModel = config('admin.database.permissions_model');
+                    $permissionModel = new $permissionModel;
 
-                return array_column($v, 'id');
-            });
+                    return $permissionModel->allNodes();
+                })
+                ->customFormat(function ($v) {
+                    if (!$v) return [];
 
-        $form->display('created_at', trans('admin.created_at'));
-        $form->display('updated_at', trans('admin.updated_at'));
+                    return array_column($v, 'id');
+                });
 
-        if ($id == RoleModel::ADMINISTRATOR_ID) {
-            $form->disableDeleteButton();
-        }
+            $form->display('created_at', trans('admin.created_at'));
+            $form->display('updated_at', trans('admin.updated_at'));
 
-        return $form;
+            if ($form->getKey() == RoleModel::ADMINISTRATOR_ID) {
+                $form->disableDeleteButton();
+            }
+        });
     }
 
     /**

+ 1 - 1
src/Form/Field.php

@@ -754,7 +754,7 @@ class Field implements Renderable
      * @param \Closure $closure
      * @return $this
      */
-    public function prepareForSave(\Closure $closure)
+    public function saving(\Closure $closure)
     {
         $this->prepare = $closure;
 

+ 0 - 23
src/Form/Field/Tags.php

@@ -31,11 +31,6 @@ class Tags extends Field
      */
     protected $key = null;
 
-    /**
-     * @var \Closure
-     */
-    protected $saveAction = null;
-
     /**
      * {@inheritdoc}
      */
@@ -102,20 +97,6 @@ class Tags extends Field
         return $this;
     }
 
-    /**
-     * Set save Action.
-     *
-     * @param \Closure $saveAction
-     *
-     * @return $this
-     */
-    public function saving(\Closure $saveAction)
-    {
-        $this->saveAction = $saveAction;
-
-        return $this;
-    }
-
     /**
      * {@inheritdoc}
      */
@@ -123,10 +104,6 @@ class Tags extends Field
     {
         $value = array_filter($value, 'strlen');
 
-        if ($this->keyAsValue) {
-            return is_null($this->saveAction) ? $value : ($this->saveAction)($value);
-        }
-
         if (is_array($value) && !Arr::isAssoc($value)) {
             $value = implode(',', $value);
         }

+ 2 - 2
src/Models/Repositories/Role.php

@@ -6,10 +6,10 @@ use Dcat\Admin\Repositories\EloquentRepository;
 
 class Role extends EloquentRepository
 {
-    public function __construct()
+    public function __construct($relations = [])
     {
         $this->eloquentClass = config('admin.database.roles_model');
 
-        parent::__construct();
+        parent::__construct($relations);
     }
 }