Laravel 后台管理 Dcat Admin 使用记录

Laravel Dcat Admin

  • 安装配置
  • 修改配置
  • 表格操作 `Ajax 结合 Pjax` 更新数据状态
  • 表格 链接
  • 表单
  • 设置页面(通常修改更新在同一页面)
    • 表单

安装配置

安装文档地址
框架版本 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



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

表单

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

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

你可能感兴趣的:(laravel,php)