T-DOC
  • Laravel-11
  • Laravel-10
  • Laravel-6X
  • Laravel-5.5
Dcat-Admin
  • Yii2
  • 重构2
  • Laravel-11
  • Laravel-10
  • Laravel-6X
  • Laravel-5.5
Dcat-Admin
  • Yii2
  • 重构2
  • 入门

    • 简介
    • 安装
    • 1.x升级指南
    • 版本升级
    • 快速开始
    • 开发前必读
    • 主题与颜色
    • 静态资源
    • 视图与自定义页面
    • 多应用 (多后台)
    • JS组件
    • 常见问题
    • Laravel Octane
  • 数据表格

    • 基本使用
    • 列的使用和扩展
    • 列的显示和扩展
    • 行的使用和扩展
    • 工具栏
    • 树状表格
    • 组合表头
    • 数据来源以及查询条件
    • 关联关系
    • 查询过滤
    • 列过滤器
    • 快捷搜索
    • 规格筛选器
    • 数据导出
    • 快捷创建
    • 行内编辑
    • 事件
    • 字段翻译
    • 数据软删除
    • 头部和脚部
    • 异步渲染
  • 数据表单

    • 基本使用
    • 图片/文件上传
    • 字段的使用
    • 字段扩展
    • 数据源
    • 表单弹窗
    • 关联关系
    • JSON表单
    • 分步表单
    • 表单验证
    • 工具表单
    • 事件以及表单响应
    • 初始化
    • 表单布局
    • 字段翻译
    • 字段动态显示
  • 数据详情

    • 基本使用
    • 字段显示
    • 关联关系
    • 字段显示扩展
    • 初始化
    • 字段翻译
  • 模型树

    • 基本使用
  • 数据仓库

    • 基本使用
  • 动作

    • 基本使用
    • 数据表格
    • 数据表单
    • 数据详情
    • 模型树
  • 多语言

    • 基本使用
  • 开发扩展

    • 扩展基本使用
    • 开发扩展
  • 页面组件

    • 异步加载
    • 图表
    • 数据统计卡片
    • 模态窗 (Modal)
    • 工具表单
    • 下拉菜单
    • 单/复选框
    • 选项卡
    • 警告框
    • 提示窗
    • Markdown
    • 卡片
  • 区块 (section)

    • 区块基本使用
  • 动作以及表单响应

    • 动作以及表单响应
  • 权限控制

    • 权限控制
  • 菜单

    • 菜单基本使用
  • 帮助函数

    • 帮助函数
  • 开发工具

    • 基本使用
  • 自定义登陆认证

    • 自定义登录
  • 自定义头部导航

    • 自定义头部导航条
  • 更新日志

    • BETA版本更新日志
    • 更新日志

视图与自定义页面

Dcat Admin 中文文档 /

视图与自定义页面

视图

在Dcat Admin中我们可以用admin_view函数渲染视图,这个功能借鉴了vue的设计思想,可以把HTML、CSS和JS代码写在同一个模板文件中,让代码分层更清晰更简洁易读,如

<div class="my-class">...</div>

<style>
    .my-class {
        color: blue;
    }
</style>

<script require="@test1,@test2" init=".my-class">
    $this.css({background: 'red'})
</script>

在php中渲染这个视图

public function index(Content $content)
{
    return $content->body(admin_view('...'));
}

示例解析

上面示例中的代码,其实相当于下面的代码

<div class="my-class">...</div>
public function index(Content $content)
{
    admin_require_assets(['@test1', '@test2']);

    admin_style('.my-class {
        color: blue;
    }');

    admin_script(
        <<<JS
Dcat.init('.my-class', function (\$this, id) {
    \$this.css({background: 'red'})
});
JS
    );

    return $content->body(view('...'));
}

很显然,使用admin_view渲染视图会让你的代码更简洁易读,关于Dcat.init以及script标签中的init和require属性的用法,请参考文档静态资源以及动态监听元素生成 (init)章节。

自定义页面

在Dcat Admin中构建自定义页面非常简单,可以参考如下两个例子

示例1

{tip} Dcat Admin构建的是一个单页应用,加载的JS脚本只会执行一次,所以初始化操作不能直接放在JS脚本中,应该使用Admin::script方法载入。

<?php

namespace App\Admin\Pages;

use Illuminate\Contracts\Support\Renderable;

class MyPage implements Renderable
{
    public function render()
    {
        return admin_view('admin.pages.my-page');
    }
}

视图admin.pages.my-page,注意视图代码里面不要包含<body>和<html>等标签

<div class="my-class">
  <h3>自定义页面演示</h3>
</div>

<!-- 
     引入页面所需的静态资源,这里会按需加载
    js脚本不能直接包含初始化操作,否则页面刷新后无效 
-->
{!! admin_js(['xxx/js/page.min.js']) !!}
{!! admin_css(['xxx/js/page.min.css']) !!}

<script init=".my-class">
    // js代码也可以放在模板里面
    console.log('所有JS脚本都加载完了!!!');

    $this.on('click', function () {
        ...
    });
</script>

使用

public function index(Content $content)
{
    return $content->body(new MyPage());
}

示例2

后台的仪表盘页面/admin,也可以看做是一个自定义页面,代码实现如下

public function index(Content $content)
{
    return $content
        ->header('Dashboard')
        ->description('Description...')
        ->body(function (Row $row) {
            $row->column(6, function (Column $column) {
                $column->row(Dashboard::title());
                $column->row(new Examples\Tickets());
            });

            $row->column(6, function (Column $column) {
                $column->row(function (Row $row) {
                    $row->column(6, new Examples\NewUsers());
                    $row->column(6, new Examples\NewDevices());
                });

                $column->row(new Examples\Sessions());
                $column->row(new Examples\ProductOrders());
            });
        });
}
Last Updated:
Contributors: Hans
Prev
静态资源
Next
多应用 (多后台)