• Laravel 后台管理 Dcat Admin 使用记录


    安装配置

    安装文档地址
    框架版本 Laravel 8.*

    修改配置

    修改 admin.php 文件

    return [
    	// 后台名称
        'name' => 'DAD后台管理',
        // 标题
        'title' => '后台管理',
    	// 本地(http)无法访问时, 在`env`中定义ADMIN_HTTPS 将 `true` 改为 `false`;
    	'https' => env('ADMIN_HTTPS', true),
    ];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    英文改为中文
    修改 app.php 文件

    return [
    	// 修改时区
       'timezone' => 'Asia/Shanghai',
       // 修改地区语言
       //    'locale' => 'en',
        'locale' => 'zh_CN',
    ];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    表格操作 Ajax 结合 Pjax 更新数据状态

    表格字段js 操作

    $grid->column('auditing', '审核')->display(function () {
                    $href = admin_url('admin-xxx/handle');
                    if ($this->status > 2) {
                        return '已处理';
                    }
                    return <<<HTML
    
    
    
    HTML;
                });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    路由

    // 审核 - 事件
    $router->post('admin-xxx/handle', 'AdminXXXController@handle');
    
    • 1
    • 2

    请求方法

    /**
     * 处理请求
     * @param Request $request
     */
    public function handle(Request $request)
    {
        // 获取当前行ID
        $id = $request->input('id', 0);
        $state = $request->input('state', 0);
        // 更新逻辑
        // 返回响应结果并刷新页面
        return Admin::json()->success("操作成功");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    表格 链接

    链接 1. 字数超出隐藏 2. 链接新窗口打开

    // 字数超出隐藏
    $grid->column('title')->limit(20);
    // 链接新窗口打开
    $grid->column('link')->display(function ($text) {
    	$strLimit = Str::limit($text, 20);
        return "{$strLimit}";
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    表单

    功能 - 默认值, 新增操作, 编辑操作

    $form->hidden('status')->default(1);
    $form->hidden('created_at');
    $form->hidden('code');
    // 判断是否为新增操作
    if ($form->isCreating()) {
        // 新增时使用当前时间(模型禁用自动维护时间戳 $timestamps = false)
    	$form->created_at = now()->toDateTimeString();
    	$form->saving(function (Form $form) {
       		// 修改用户提交的数据
    		$form->code = $this->createCode();
    	});
    }
    // 编辑
    if ($form->isEditing()) {
    	// 禁用编辑
    	$form->text('code')->disable();
    	$form->radio('status')->options([1 => '未使用', 2 => '已使用']);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    设置页面(通常修改更新在同一页面)

    index 方法自动覆盖 grid 方法 将 body 中替换为 表单页面

        public function index(Content $content)
        {
            return $content
                ->translation($this->translation())
                ->title($this->title())
    //            ->body($this->grid());
                // edit ID 
                ->body($this->form()->edit('1'));
        }
    
    /**
         * Make a form builder.
         *
         * @return Form
         */
       protected function form()
       {
           return Form::make(new SystemSettings(), function (Form $form) {
               $form->action('system-settings/1'); // 提交表单地址
               $form->disableHeader();
               $form->column(8, function (Form $form) {
                   $form->textarea('home_notice');
                   $form->textarea('home_link');
                   $form->text('home_link_name');
               });
               // 保存时更改数据
               $form->saving(function (Form $form) {
                   
               });
    
               // 表单底部
               $form->footer(function ($footer) {
                   // 去掉`重置`按钮
                   $footer->disableReset();
                   // 去掉`查看`checkbox
                   $footer->disableViewCheck();
                   // 去掉`继续编辑`checkbox
                   $footer->disableEditingCheck();
                   // 去掉`继续创建`checkbox
                   $footer->disableCreatingCheck();
                   // 设置`查看`默认选中
                   $footer->defaultViewChecked();
                   // 设置`继续编辑`默认选中
                   $footer->defaultEditingChecked();
                   // 设置`继续创建`默认选中
                   $footer->defaultCreatingChecked();
               });
           });
       }
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    表单

    动态获取选项列表

    /**
     * @return array
     */
    public function getOptions(): array
    {
        $list = Accounts::all()->values()->toArray();
        return collect($list)->mapWithKeys(function ($item) {
            return [strval($item['id']) => $item['account']];
        })->all();
    }
    
    $options = $this->getOptions();
     return Grid::make(new XXXModel(), function (Grid $grid) use ($options ) {
     	$grid->column('id', '编号')->sortable();
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    Leetcode2760. 最长奇偶子数组
    智慧农业新篇章:拓世法宝AI智能直播一体机助力乡村振兴与农业可持续发展
    【接口测试】Jmeter接口实战-Dubbo接口+造10W数据测试(详细)
    死锁的成因和对应的解决方案
    HMI 出色的 UI 风格
    minikube 快速使用入门
    YOLO v3源码详解
    mybatise-plus的id过长问题
    原生js--封装点击上传附件
    2021山东CSP小学组【成绩排名】
  • 原文地址:https://blog.csdn.net/weixin_41258075/article/details/133911593