Laravel 后台管理 Dcat Admin 使用记录-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

Laravel Dcat Admin

安装配置

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

修改配置

修改 admin.php 文件

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

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

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

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

表格字段js 操作

$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;
            });

路由

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

请求方法

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

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

表单

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

$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 中替换为 表单页面

    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();
           });
       });
   }
    

表单

动态获取选项列表

/**
 * @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();
 }
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6