Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,4 @@ pre-dist
/laravel-tests
*.bak.*
.DS_Store
*_TODO.md
56 changes: 56 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Changelog

本项目(`zgy-dcat/laravel-admin`,`jqhph/dcat-admin` 的永久维护 fork)的变更记录。
格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/);
版本号见 `src/Admin.php` 的 `Admin::VERSION`(发版时同步更新)。

## [Unreleased]

### Added

- **5 套主题方案**:`indigo`(晨曦靛蓝)、`navy`(深海军蓝)、`emerald`(翡翠清新)、`amber`(落日暖橙)、`midnight`(极夜深色)。
新增 `resources/assets/dcat/sass/theme/_scheme.scss` 承载主色之外的整套配色(页面底、文字色、深色侧边栏、浅中底、辅助色);
`php artisan admin:minify all` 现在编译全部 9 套主题。详见 [`docs/主题与侧边栏样式.md`](docs/主题与侧边栏样式.md)。
- **5 种实色侧边栏样式**:`layout.sidebar_style` 支持 `indigo` / `navy` / `emerald` / `amber` / `midnight`
(源码 `resources/assets/dcat/extra/sidebar-solid.scss`,产物 `dcat/extra/sidebar-solid.css`,与主题无关,任何主题下都可用)。
- **`Admin::SECTION['FOOTER']`**:页脚文案可由应用注入,未注入时显示框架默认的 `Powered by Dcat Admin · v…`。
用法:
```php
admin_inject_section(\Dcat\Admin\Admin::SECTION['FOOTER'], function () {
return view('admin::partials.footer-copyright');
});
```
页脚骨架(`<footer class="main-footer">` 容器 + 右下角回到顶部按钮)仍由框架持有。
- **`Form::submitButtonText()`**:自定义表单提交按钮文字,例如 `$form->submitButtonText('提交审核');`。

### Changed

- **破坏性:页脚不再通过「应用覆盖视图」定制。**
框架删除了 `resources/views/partials/footer.blade.php`,改为在 `resources/views/layouts/container.blade.php` 中
`admin_section(Admin::SECTION['FOOTER'], $footerDefault)`。
**应用里如果还放着 `resources/views/vendor/admin/partials/footer.blade.php`,它会静默失效**(页脚退回框架默认样式,不会报错),
请改用上面的 `Admin::SECTION['FOOTER']` 注入方式。
- **`Admin::VERSION`** 由上游的 `2.4.2` 改为本项目自己的版本号(当前 `2.5.0`)。
该常量同时用于静态资源版本查询串(`Layout\Asset::withVersionQuery`),**发版时请同步更新**,
或在应用侧设置 `config('admin.assets_version')` 覆盖。
- 文档:修正过期包名(`printnow/laravel-admin` → `zgy-dcat/laravel-admin`)与上游指向(→ `PrintNow/dcat-admin`,见 `README.md`);
`README.origin.md` 顶部加存档说明;`CLAUDE.md` 不再写死各目录的类/字段数量。

### Removed

- 3 处 IDE 生成残留的 `// TODO: Change the autogenerated stub` 注释
(`src/Console/FormCommand.php`、`src/Form/AbstractTool.php`、`src/Widgets/Tree.php`)。

### Fixed

- **`midnight` 主题不再把页面底 / 文字色翻成深色。** 之前它会设置 `$body-bg: #101214` + `$font-color: #f6f6f6`,
而组件底色(`.box`、`.card`、按钮、输入框等)是各自写死的浅色,结果得到「近白文字落在白色卡片上」的不可用界面。
现在 `midnight` 只提供「青色主色 `#4cc9f0` + 近黑侧边栏 `#16181d`」,页面保持框架默认浅色。
**要整站深色请用 dcat 的 dark mode**:应用侧在该端配置里加 `'body_class' => ['dark-mode']`
(配套的深色组件样式在 `resources/assets/dcat/sass/theme/_dark.scss`)。

## 维护约定

- `resources/dist/` 是随包发布的预编译产物(提交进仓库);`resources/pre-dist/` 是开发构建产物(已 gitignore)。
- 内置第三方代码与资源保留其原始署名与许可证(见 `LICENSE`、`fonts/`、`resources/assets/dcat/plugins/`)。
- 应用侧发布资源请用 `php artisan admin:publish --assets --force`:该命令默认**跳过已存在的文件**,改了 CSS/JS 后不加 `--force`(或先删旧文件)不会覆盖。
26 changes: 16 additions & 10 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co

## 项目概述

Dcat Admin(`printnow/laravel-admin`)是一个 Laravel 后台管理面板构建包,是 `jqhph/dcat-admin` 的永久维护分支。提供快速 CRUD 脚手架,包含数据表格、表单、详情页、树形结构、RBAC 权限管理和插件系统。前端基于 AdminLTE 3 + Bootstrap 4 + jQuery 3。
Dcat Admin(`zgy-dcat/laravel-admin`)是一个 Laravel 后台管理面板构建包,是 `PrintNow/dcat-admin` 的永久维护分支。提供快速 CRUD 脚手架,包含数据表格、表单、详情页、树形结构、RBAC 权限管理和插件系统。前端基于 AdminLTE 3 + Bootstrap 4 + jQuery 3。

支持 Laravel 10/11/12,PHP 8.1–8.4。

Expand Down Expand Up @@ -52,24 +52,26 @@ php artisan admin:menu-cache
|---|---|
| `Admin.php` | 主门面/服务单例 — 认证、菜单、导航栏、版本号、页面区域 |
| `Grid.php` | 数据表格构建器,支持列定义、筛选器、导出、批量操作 |
| `Form.php` | 表单构建器,67 种字段类型,支持嵌套表单、标签页、分步表单 |
| `Form.php` | 表单构建器,各类字段类型(见 `Form/Field/`),支持嵌套表单、标签页、分步表单 |
| `Show.php` | 详情/只读页面构建器 |
| `Tree.php` | 树形结构展示构建器 |

### 关键子目录

- **`Form/Field/`** — 67 种字段类型(Text、Select、Image、File、Editor、Date、HasMany、Embeds、KeyValue 等)
- **`Grid/Filter/`** — 27 种筛选类型(Like、Equal、Between、Date、Scope、Group 等)
- **`Grid/Displayers/`** — 30 种列展示渲染器(Badge、Editable、Image、QRCode、Copyable 等)
- **`Http/Controllers/`** — 18 个控制器(Auth、Dashboard、User、Role、Permission、Menu、Scaffold 等)
- **`Http/Middleware/`** — 7 个中间件:`admin.auth`、`admin.pjax`、`admin.permission`、`admin.bootstrap`、`admin.session`、`admin.upload`、`admin.app`
- **`Console/`** — 22+ 个 Artisan 命令,模板文件在 `Console/stubs/`
> 下面只列职责与代表类;各类的数量会随版本变化,需要准确数字直接看对应目录。

- **`Form/Field/`** — 字段类型(Text、Select、Image、File、Editor、Date、HasMany、Embeds、KeyValue 等)
- **`Grid/Filter/`** — 筛选类型(Like、Equal、Between、Date、Scope、Group 等)
- **`Grid/Displayers/`** — 列展示渲染器(Badge、Editable、Image、QRCode、Copyable 等)
- **`Http/Controllers/`** — 控制器(Auth、Dashboard、User、Role、Permission、Menu、Scaffold 等)
- **`Http/Middleware/`** — 中间件:`admin.auth`、`admin.pjax`、`admin.permission`、`admin.bootstrap`、`admin.session`、`admin.upload`、`admin.app`
- **`Console/`** — Artisan 命令,模板文件在 `Console/stubs/`
- **`Scaffold/`** — 代码生成器(Controller、Form、Grid、Model、Show、Migration、Repository 创建器),模板文件在 `Scaffold/stubs/`
- **`Models/`** — Eloquent 模型:Administrator、Role、Permission、Menu、Setting、Extension
- **`Extend/`** — 插件/扩展系统(Manager、ServiceProvider、Setting、Version 管理)
- **`Repositories/`** — 仓库模式(EloquentRepository、QueryBuilderRepository)
- **`Widgets/`** — 25+ 个可复用组件(Form、Table、Tree、Box、Card、Modal、DialogForm、ApexCharts、Metrics 等)
- **`Traits/`** — 15 个共享 Trait(HasAssets、HasPermissions、HasHtml、InteractsWithRenderApi 等)
- **`Widgets/`** — 可复用组件(Form、Table、Tree、Box、Card、Modal、DialogForm、ApexCharts、Metrics 等)
- **`Traits/`** — 共享 Trait(HasAssets、HasPermissions、HasHtml、InteractsWithRenderApi 等)
- **`Support/`** — 工具类:Helper、Setting、WebUploader、Translator、Context、Composer
- **`Layout/`** — 布局系统:Asset、Content、Column、Row、Menu、Navbar、SectionManager
- **`Octane/`** — Laravel Octane 兼容(FlushAdminState 监听器)
Expand All @@ -91,6 +93,10 @@ php artisan admin:menu-cache

前端资源通过 Laravel Mix(`webpack.mix.js`)编译。源文件在 `resources/assets/`,编译产物在 `resources/dist/`。前端技术栈为 AdminLTE 3、Bootstrap 4、jQuery 3,内置多个插件(editor-md、webuploader、datetimepicker、fontawesome-iconpicker 等)。

主题(`layout.color`,含 `indigo`/`navy`/`emerald`/`amber`/`midnight` 等 9 套)与侧边栏样式(`layout.sidebar_style`,含 5 种实色侧边栏)的机制、色值表和新增主题的步骤见 [`docs/主题与侧边栏样式.md`](docs/主题与侧边栏样式.md)。重新编译全部主题:`php artisan admin:minify all`,随后 `php artisan admin:publish --assets` 发布。

> ⚠️ **发布资源要加 `--force`**:`php artisan admin:publish --assets` 默认**跳过已存在的文件**,改了 CSS/JS 后不加 `--force`(或先删掉 `public/vendor/dcat-admin/` 下对应的旧文件)不会覆盖,页面上会一直是旧资源。

### 国际化

语言包目录:`resources/lang/`,包含 `en`、`zh_CN`、`zh_TW` 三种语言。
Expand Down
1 change: 1 addition & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
The MIT License (MIT)

Copyright (c) 2019 Jiang qinghua, Jens Segers
Copyright (c) 2026 zgy

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
Expand Down
29 changes: 19 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@
<br>

<p align="center">
<a href="https://packagist.org/packages/printnow/laravel-admin"><img src="https://poser.pugx.org/printnow/laravel-admin/v/stable" /></a>
<a href="https://packagist.org/packages/printnow/laravel-admin"><img src="https://img.shields.io/packagist/dt/printnow/laravel-admin.svg" /></a>
<a href="https://packagist.org/packages/printnow/laravel-admin"><img src="https://img.shields.io/packagist/v/printnow/laravel-admin.svg" /></a>
<a href="https://packagist.org/packages/zgy-dcat/laravel-admin"><img src="https://poser.pugx.org/zgy-dcat/laravel-admin/v/stable" /></a>
<a href="https://packagist.org/packages/zgy-dcat/laravel-admin"><img src="https://img.shields.io/packagist/dt/zgy-dcat/laravel-admin.svg" /></a>
<a href="https://packagist.org/packages/zgy-dcat/laravel-admin"><img src="https://img.shields.io/packagist/v/zgy-dcat/laravel-admin.svg" /></a>
<img src="https://img.shields.io/badge/PHP-8.1~8.5-59a9f8.svg?style=flat" />
<img src="https://img.shields.io/badge/Laravel-10~13-59a9f8.svg?style=flat" />
</p>

[jqhph/dcat-admin](https://github.com/jqhph/dcat-admin) 的永久维护 fork。原项目已停止维护,本项目持续跟进 Laravel / PHP 新版本兼容、安全修复和功能增强。
[PrintNow/dcat-admin](https://github.com/PrintNow/dcat-admin) 的永久维护 fork。原项目已停止维护,本项目持续跟进 Laravel / PHP 新版本兼容、安全修复和功能增强。

## 兼容性

Expand All @@ -27,7 +27,7 @@
## 安装

```bash
composer require printnow/laravel-admin
composer require zgy-dcat/laravel-admin
```

发布资源并完成安装:
Expand Down Expand Up @@ -57,10 +57,7 @@ php artisan admin:install
- 增强枚举(`BackedEnum`)字段的渲染支持
- 支持 `.5` 列宽,如 `col-sm-1.5`
- 优化 HTTPS 站点的资源 URL 生成

### Bug 修复

- 修复 Grid 以 `LazyRenderable` 渲染时 Group Filter 筛选不生效的问题([@deflinhec](https://github.com/PrintNow/dcat-admin/commit/4390a8f494c20910828e7c93513d13032f0d01dd))
- **新增 URL 主键加密**:可对路由路径中的主键(如 `/admin/books/{id}/edit`)进行加密(默认 36 位 UUID 样式密文),防止直接暴露数据库主键;支持 `encrypt` / `cipher` / `cipher_salt` 配置与手动加解密 Helper,详见 [加密功能使用说明](docs/url-cipher-guide.md)

## 文档

Expand All @@ -70,11 +67,23 @@ php artisan admin:install
- [English documentation](http://www.dcatadmin.com/docs/en-2.x/quick-start.html)
- [原项目 README(功能特性、扩展、鸣谢)](README.origin.md)

项目扩展能力专项说明:

- [URL 主键加密功能使用说明](docs/url-cipher-guide.md)

## 扩展包

| 扩展 | 描述 | dcat-admin 版本 |
| --- |----------------------------------------------|---------------|
| [zgy-dcat/wangeditor](https://github.com/gy23rm/dcat-wangeditor) | wangEditor 5 富文本编辑器表单字段 | dev-master |
| [zgy-dcat/distpicker](https://github.com/gy23rm/dcat-distpicker) | 省市区三级联动(super-eggs/dcat-distpicker 的维护 fork) |dev-master |
| [zgy-dcat/master-detail](https://github.com/gy23rm/dcat-master-detail) | 左树右表联动(Master-Detail)扩展 |dev-master |

## 免责声明

本项目已通过测试并在实际生产环境中使用,但无法保证所有修改绝对无误,上线前请充分测试。

如果你在使用过程中遇到任何问题,欢迎[提交 Issue](https://github.com/PrintNow/dcat-admin/issues),感谢每一位反馈和贡献的朋友。
如果你在使用过程中遇到任何问题,欢迎[提交 Issue](https://github.com/gy23rm/dcat-admin/issues),感谢每一位反馈和贡献的朋友。

## License

Expand Down
4 changes: 4 additions & 0 deletions README.origin.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@

> ⚠️ 本文件是**上游 [PrintNow/dcat-admin](https://github.com/PrintNow/dcat-admin) 原始 README 的存档**(保留原貌):
> 里面的包名 `printnow/laravel-admin`、packagist 徽章和各类链接都是**上游**的,不是本项目
> (本项目包名是 `zgy-dcat/laravel-admin`,最新说明见 [README.md](README.md))。

<div align="center">
<img src="resources/dist/images/logo-rectangle.png" height="80">
</div>
Expand Down
12 changes: 4 additions & 8 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "printnow/laravel-admin",
"name": "zgy-dcat/laravel-admin",
"description": "Dcat admin 永久分叉版 / 支持 Laravel 10-13, PHP 版本限制 >= 8.1(支持 PHP 8.5)",
"type": "library",
"keywords": [
Expand All @@ -11,16 +11,12 @@
"laravel admin",
"dcat admin"
],
"homepage": "https://github.com/PrintNow/dcat-admin",
"homepage": "https://github.com/gy23rm/dcat-admin",
"license": "MIT",
"authors": [
{
"name": "Shine",
"email": "i@nowtime.cc"
},
{
"name": "jqh",
"email": "841324345@qq.com"
"name": "zgy",
"email": "gy23rm@163.com"
}
],
"require": {
Expand Down
40 changes: 38 additions & 2 deletions config/admin.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,42 @@
'middleware' => ['web', 'admin'],

'enable_session_middleware' => false,

/*
|--------------------------------------------------------------------------
| 主键加密
|--------------------------------------------------------------------------
|
| 开启后,Grid/Form 生成的路径参数中的记录主键会被加密
| (如 /users/{id}/edit 中的 {id}),请求进入时由 admin.cipher
| 中间件自动解密,控制器拿到的永远是明文主键。
|
| 仅加密主键;其它查询参数(过滤条件等)保持明文,不做处理。
|
| encrypt: 是否启用
| cipher : 加解密实现类,必须实现 \Dcat\Admin\Contracts\UrlCipher
| 当前默认 UuidCipher(AES 伪 UUID 版,密文为 36 位 UUID 格式;
| 仅支持正整数主键,范围 1 ~ 1099511627775(uint40);
| 作用域内嵌密文,从 cipher_salt 派生 AES 密钥)
| 可选 CryptCipher(配置盐混淆版;盐为空会报错)
| cipher_salt : 加解密盐(字符串),用于派生混淆字节流;必须有值,为空会抛异常
| cipher_magic : UuidCipher 明文块第一字节魔数(默认 "\x02")。可配 int / 0x 十六进制
| 字符串 / "\x01" 转义字符串,最终归一为单字节;加解密共用该值。
| 注意:改动它会让旧密文无法解密(解密魔数也会变),如无必要请保持默认。
| cipher_scopes : (历史兼容,可保留)作用域常量数组扩展,仅旧版 UuidCipher 强制校验
| 注册用。当前实现不再强制校验作用域范围;作用域必须是 1~2 个可打印
| ASCII 字符的短标签(如 gi / fo / bo),超长(如 book:grid.id)加密时报错。
| 以下配置仅为历史兼容保留,可删除
*/
'encrypt' => env('ADMIN_ROUTE_ENCRYPT', false),

'cipher' => \Dcat\Admin\Support\UuidCipher::class,

'cipher_salt' => env('ADMIN_ROUTE_CIPHER_SALT', 'dcat_c'),

'cipher_magic' => "\x02",

'cipher_scopes' => [],
],

/*
Expand Down Expand Up @@ -327,7 +363,7 @@
| This value is the layout of admin pages.
*/
'layout' => [
// default, blue, blue-light, green
// default, blue, blue-light, green, indigo, navy, emerald, amber, midnight
'color' => 'default',

// sidebar-separate
Expand All @@ -337,7 +373,7 @@

'sidebar_collapsed' => false,

// light, primary, dark
// light, primary, dark, indigo, navy, emerald, amber, midnight
'sidebar_style' => 'light',

'dark_mode_switch' => false,
Expand Down
Loading