dcat笔记

一,修改系统自带的表和页面
  • 环境:laravel9+dcat2+php8.2

此处我想修改admin_users表,添加一个park_id 关联到parks表,须要修改管理员页面
使用继承重写的思路,最好不要直接去修改vendor包里面的dcat源码,只需要找到相应位置,然后复制过来,重写即可。
新建一个model

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Dcat\Admin\Models\Administrator as AdminUser;
class Administrator extends AdminUser
{

    public function __construct( array $attributes = [] ) {
        array_push( $this->fillable, 'park_id' );
        parent::__construct( $attributes );
    }
    //定义模型关联关系
    public function park()
    {
        return $this->belongsTo(Park::class);
    }
}

新建一个controller

<?php

namespace App\Admin\Controllers;

use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\UserController;
use Dcat\Admin\Http\Repositories\Administrator;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Models\Administrator as AdministratorModel;
use Illuminate\Support\Facades\Log;

class AdministratorController extends UserController
{
    protected function grid()
    {	
    	//这里使用我定义的
        return Grid::make(\App\Models\Administrator::with(['roles','park']), function (Grid $grid) {
            $grid->column('id', 'ID')->sortable();
            $grid->column('username');
            $grid->column('name');

            if (config('admin.permission.enable')) {
                $grid->column('roles')->pluck('name')->label('primary', 3);

                $permissionModel = config('admin.database.permissions_model');
                $roleModel = config('admin.database.roles_model');
                $nodes = (new $permissionModel())->allNodes();
                $grid->column('permissions')
                    ->if(function () {
                        return ! $this->roles->isEmpty();
                    })
                    ->showTreeInDialog(function (Grid\Displayers\DialogTree $tree) use (&$nodes, $roleModel) {
                        $tree->nodes($nodes);

                        foreach (array_column($this->roles->toArray(), 'slug') as $slug) {
                            if ($roleModel::isAdministrator($slug)) {
                                $tree->checkAll();
                            }
                        }
                    })
                    ->else()
                    ->display('');
            }
            $grid->column( 'park.park', '园区' );
            $grid->column('created_at');
            $grid->column('updated_at')->sortable();

            $grid->quickSearch(['id', 'name', 'username']);

            $grid->showQuickEditButton();
            $grid->enableDialogCreate();
            $grid->showColumnSelector();
            $grid->disableEditButton();

            $grid->actions(function (Grid\Displayers\Actions $actions) {
                if ($actions->getKey() == AdministratorModel::DEFAULT_ID) {
                    $actions->disableDelete();
                }
            });
        });
    }
    public function form() {
        $f = parent::form();
        $f->text( 'park_id' );
        return $f;
    }
    public function update($id)
    {
        Log::info("这里编辑");
        return $this->form()->update($id);
    }

}

重新定义路由

$router->resource('auth/users', \App\Admin\Controllers\AdministratorController::class)->middleware(config('admin.route.middleware'));
二,修改架构为frame版(暂时有bug,不要使用)
composer require mosiboom/dcat-iframe-tab

# 发布扩展必备文件
$ php artisan vendor:publish --tag=iframe-tab
# 发布扩展配置文件
$ php artisan vendor:publish --tag=iframe-tab.config

修改 app\routes.php

...
$router->get('home', 'HomeController@index');
...

修改菜单中的路由
在这里插入图片描述

三,重写内置方法

可能会需要重写 update方法,store方法,delete方法,可在对应的controller中重写方法覆盖父类中的方法

public function update($id)
    {

        abort(403, '不让编辑');
        Log::info("这里编辑了");
        return parent::update($id);
    }
    public function store()
    {
        abort(403, '这里添加了');
        Log::info("这里添加了");
        return parent::store()
    }
    public function destroy($id)
    {
        abort(403, '不让删除');
        Log::info("不让删除");
        return parent::destroy($id);
    }
四,自定义方法

自定义方法须要自己编写Action类
例如:我在index方法中禁用了默认的删除操作按钮,并重新定义了一个按钮newdelete

 public function index(Content $content)
    {
        return $content->header('树状模型')
            ->body(function (Row $row) {
                $tree = new Tree(new Classify);
                $tree->branch(function ($branch) {
                    //$src = config('admin.upload.host') . '/' . $branch['logo'] ;icon-align-justify
                    $logo = "<i class='fa fa-fw feather icon-align-justify'></i>";

                    return "{$branch['id']} - {$branch['title']} $logo";
                });
                $tree->actions(function (Tree\Actions $actions) {

                    // 禁用默认删除操作
                    $actions->disableDelete();
                });
                //自定义删除操作
                $tree->actions(new NewDelete());
                //自定义操作
                $tree->actions(new ShowList());
                $row->column(12, $tree);
            });
    }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dcat Admin是一个基于Laravel框架的后台管理系统,它提供了丰富的功能和组件来快速构建和管理后台界面。你可以通过以下步骤来安装和使用Dcat Admin: 1. 首先,你需要访问Dcat Admin的文文档地址,这里会有详细的使用说明和文档。 2. 接下来,你需要进入你的项目目录,可以通过命令行进入 cd test10。 3. 然后,你可以使用Composer来安装Dcat Admin,运行命令 composer require dcat/laravel-admin 。 4. 在安装完成后,你需要手动创建一个MySQL数据库,可以使用命令行登录到MySQL并执行以下命令:mysql -uroot -p,然后输入密码。接着,执行命令 create database dcat_admin; 然后退出MySQL。 5. 最后,你可以启动Dcat Admin,通过命令行进入到项目目录,然后运行命令 php artisan serve。 这样,你就成功安装和启动了Dcat Admin,可以开始使用它来管理你的后台界面了。请参考Dcat Admin的文档以了解更多详细功能和使用方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [零基础安装、启动Dcat-Admin框架](https://blog.csdn.net/have_a_cat/article/details/115354220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值