Laravel 后台管理 Dcat Admin 使用记录

Laravel Dcat Admin

安装配置

安装文档地址

框架版本 Laravel 8.*

修改配置

修改 admin.php 文件

php 复制代码
return [
	// 后台名称
    'name' => 'DAD后台管理',
    // 标题
    'title' => '后台管理',
	// 本地(http)无法访问时, 在`env`中定义ADMIN_HTTPS 将 `true` 改为 `false`;
	'https' => env('ADMIN_HTTPS', true),
];

英文改为中文

修改 app.php 文件

php 复制代码
return [
	// 修改时区
   'timezone' => 'Asia/Shanghai',
   // 修改地区语言
   //    'locale' => 'en',
    'locale' => 'zh_CN',
];

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

表格字段js 操作

php 复制代码
$grid->column('auditing', '审核')->display(function () {
                $href = admin_url('admin-xxx/handle');
                if ($this->status > 2) {
                    return '已处理';
                }
                return <<<HTML
<button class="btn btn-primary btn-outline btn-sm" data-action-{$this->id}="changeStatus" data-id="{$this->id}" data-state="4" >驳回</button>
<button class="btn btn-primary btn-outline btn-sm" data-action-{$this->id}="changeStatus" data-id="{$this->id}" data-state="3" >已完成</button>
<script>
Dcat.ready(function () {
    // JS 代码也可以放在模板文件中
    console.log('模板文件执行js~');
    $('[data-action-{$this->id}]').click(function(e) {
      console.log(e.target.dataset);
      let dataset = e.target.dataset;
      $.ajax({
           type: "POST",
           url: "{$href}",
           data: {id: dataset.id, state: dataset.state},
           success: function(res){
              console.log(res);
              if(res.status){
                  Dcat.success('更新成功');
                  Dcat.reload('#pjax-container');
              }
           },
           error:function(err) {
              console.log(err);
           }
      });
    })
});
</script>
HTML;
            });

路由

php 复制代码
// 审核 - 事件
$router->post('admin-xxx/handle', 'AdminXXXController@handle');

请求方法

php 复制代码
/**
 * 处理请求
 * @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. 链接新窗口打开

php 复制代码
// 字数超出隐藏
$grid->column('title')->limit(20);
// 链接新窗口打开
$grid->column('link')->display(function ($text) {
	$strLimit = Str::limit($text, 20);
    return "<a href='{$text}' target='_blank'>{$strLimit}</a>";
});

表单

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

php 复制代码
$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 => '已使用']);
}

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

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

php 复制代码
    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();
           });
       });
   }
    

表单

动态获取选项列表

php 复制代码
/**
 * @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();
 }
相关推荐
DigitalOcean10 天前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
两个人的幸福12 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo14 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack14 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820715 天前
PHP 扩展——从入门到理解
php
鹏仔先生16 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下16 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip16 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒16 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog25016 天前
不要再继续优化 TCP
网络协议·tcp/ip·php