目录
▸
入门
简介
安装
1.x升级指南
版本升级
快速开始
开发前必读
主题与颜色
静态资源
视图与自定义页面
多应用(多后台)
JS组件
常见问题
Laravel Octane
▸
数据表格
基本使用
列的使用和扩展
列的显示和扩展
行的使用和扩展
工具栏
树状表格
组合表头
数据来源以及查询条件
关联关系
查询过滤
列过滤器
快捷搜索
规格筛选器
数据导出
快捷创建
行内编辑
事件
字段翻译
数据软删除
头部和脚部
表格异步渲染
▸
数据表单
基本使用
图片/文件上传
字段的使用
字段扩展
数据源
表单弹窗
关联关系
JSON表单
分步表单
表单验证
工具表单
事件以及表单响应
初始化
表单布局
字段翻译
字段动态显示
▸
数据详情
基本使用
字段显示
关联关系
字段显示扩展
初始化
字段翻译
▸
模型树
基本使用
▸
数据仓库
基本使用
▸
动作
基本使用
数据表格
数据表单
数据详情
模型树
▸
多语言
基本使用
▸
开发扩展
扩展基本使用
开发扩展
▸
页面组件
异步加载
图表
数据统计卡片
模态窗(Modal)
工具表单
下拉菜单
单/复选框
选项卡
警告框
提示窗
Markdown
卡片
▸
区块
区块基本使用
▸
动作以及表单响应
动作以及表单响应
▸
权限控制
权限控制
▸
菜单
菜单基本使用
▸
帮助函数
帮助函数
▸
开发工具
基本使用
▸
自定义登陆认证
自定义登录
▸
自定义头部导航
自定义头部导航条
▸
更新日志
BETA版本更新日志
更新日志
内容导航
1.x
2.x
常见问题
创建时间:2024-06-26 10:26:02 / 更新时间:2024-06-26 10:26:02
# 常见问题汇总 ### 前端控制台JS报错? 如果发现这个问题,绝大部分都是因为静态资源文件有问题引起的(比如升级步骤不正确),请先重新发布资源并**清理浏览器缓存**: ``` php artisan admin:publish --assets --force ``` 如果还是报错,请到此处进行反馈 https://github.com/jqhph/dcat-admin/issues ### 如何设置语言为简体中文? 打开配置文件`config/app.php`,设置`locale`参数的值为`zh_CN`。 ### Laravel7时间显示为UTC格式 这个是`Laravel7`升级后带来的坑,原因请参考[日期序列化](https://learnku.com/docs/laravel/7.x/upgrade/7445#date-serialization)。 在本项目中解决这个问题很简单,只需在`Model`中引入`Dcat\Admin\Traits\HasDateTimeFormatter`这个`trait`即可。 ```php <?php namespace App\Models; use Dcat\Admin\Traits\HasDateTimeFormatter; use Illuminate\Database\Eloquent\Model; class MyModel extends Model { use HasDateTimeFormatter; } ``` ### 表单保存时报错`Array to string conversion` 出现这个问题是因为表单提交的值最后转换成了`array`类型,而`MySQL`是不支持直接存储`array`类型数据的,在`dcat-admin`中可以用以下方式对数据格式进行转换 ```php $form->multipleSelect('user_id')->saving(function ($v) { // 转为 , 隔开的字符串 return implode(',', $v);}); ``` 当然,也可以通过`model`的**修改器**去转化字段的值,这方面内容可以参考`laravel`文档,这里就不再赘述。 > 更优雅的转化值方法,可参考 [Dcat Admin 教程 - 如何优雅地更改表单值的数据类型?](https://learnku.com/articles/44386) ### 如何从laravel-admin迁移到dcat-admin? [Dcat Admin 教程 - 如何从 Laravel admin 迁移到 dcat admin?](https://learnku.com/articles/44235) ### 重写登陆页面和登陆逻辑 方式一,重写登陆控制器方法: 默认的登陆控制器用的是`App\Admin\AuthController`这个类,可以通过配置参数`admin.auth.controller`进行修改 ```php <?php namespace App\Admin\Controllers; use Dcat\Admin\Controllers\AuthController as BaseAuthController; class AuthController extends BaseAuthController { // 自定义登陆view模板 protected $view = 'admin.login'; // 重写登陆页面逻辑 public function getLogin(Content $content) { ... } ... } ``` 方式二,覆写路由: 在路由文件`app/Admin/routes.php`中,覆盖掉登陆页面和登陆逻辑的路由,即可实现自定义的功能 ```php Route::group([ 'prefix' => config('admin.prefix'), 'namespace' => Admin::controllerNamespace(), 'middleware' => ['web', 'admin'], ], function (Router $router) { $router->get('auth/login', 'AuthController@getLogin'); $router->post('auth/login', 'AuthController@postLogin'); }); ``` 在自定义的路由器AuthController中的`getLogin`、`postLogin`方法里分别实现自己的登陆页面和登陆逻辑。 ### 更新新版本后出现异常 如果遇到更新之后,部分组件不能正常使用,那有可能是`dcat-admin`自带的静态资源有更新了,需要运行命令`php artisan admin:publish --force`来重新发布前端资源,发布之后不要忘记清理浏览器缓存. ### 文件上传失败或无法访问? 如果你发现无法上传文件,那么通常有几下几点原因: 1. `Laravel`文件上传配置不正确,请参考文档[图片/文件上传](https://learnku.com/docs/dcat-admin/1.x/picture-file-upload/8106)。如果你不了解`laravel`文件上传功能,请阅读文档[Laravel - 文件存储](https://learnku.com/docs/laravel/7.x/filesystem/7485) 2. 文件过大,需要调整`php.ini`的`upload_max_filesize`参数 3. 文件上传目录没有写权限 4. `php`没有安装或没有开启`fileinfo`扩展 5. 检查`php.ini`的`upload_tim_dir`参数设置是否正常 6. 检查是否升级新版本没有重新发布资源或没有清理浏览器缓存 如果文件上传成功了,却无法正常访问,那么可能是`.env`配置文件中的`APP_URL`参数没有设置正确。 ### 关于前端资源加载问题 `Dcat Admin`是支持前端资源按需加载的,在需要用到某个组件的时候再引入前端资源即可,开发者无需担心安装组件过多影响页面加载速度。 只有那种需要在全局页面引入的资源,才需要在`app/Admin/bootstrap.php`或`ServiceProvider::boot`方法中引入: ```php Admin::css('path/to/your/css'); Admin::js('path/to/your/js'); ``` ### 谷歌字体加载过慢? 如果出现谷歌字体加载过慢的情况下,可以把谷歌字体下载到你自己的服务器,然后在`app/Admin/bootstrap.php`中加入以下代码,让系统从你自己的服务器中加载字体 ```php Admin::asset()->alias( '@nunito', ['css' => asset('你的服务器字体路径/nunito.css?family=Nunito:200,200i,300,300i,400,400i,600,600i,800,800i,900,900i')] ); ``` 如果你完全不想使用这两种字体,可以加入以下代码 ```php Admin::asset()->alias('@nunito', []); ``` ### 为何配置了角色和权限,依然提示无权访问? 这个原因可能是由于权限的`URL`路径配置错误导致的,正确的包含增删改查功能的`URL`配置应该是`auth/users*`这样的,如果配置成了`auth/users/*`,那么就会提示无权访问。 > {tip} 另外标签表单填写自定义URL有两种方法:一种是选中后按`删除键`进行更改;另一种是填写后按`空格键` + `回车键`。 ### 为何没有权限的菜单不会自动隐藏? 权限与菜单是相互独立的,并且默认是可见的。当设置了权限之后,系统并没有办法可以判断用户是否可以访问某个菜单,所以需要给菜单绑定对应的**权限**或者**角色**,绑定之后系统就可以识别用户是否可访问这个菜单。 ### 项目使用HTTPS之后无法登陆 需要把配置文件的`admin.https`参数的值设置为`true` ### $.get(xxx) 没有反应 `Dcat Admin`使用的是`jQuery3.x`,`$.get`方法在`jQuery3.x`中已经被废弃,请使用`$.ajax`代替 ### 前后台session发生冲突 从`2.0`的版本之后 `admin.session` 中间件不再默认启用,如果您的应用同时有前台和后台,则需要开启 `admin.session` 中间件,否则会造成前后台 `session` 冲突问题。 把配置参数 `admin.route.enable_session_middleware` 的值设置为 `true` 即可开启 ```php 'route' => [ 'domain' => env('ADMIN_ROUTE_DOMAIN'), 'prefix' => env('ADMIN_ROUTE_PREFIX', 'admin'), 'namespace' => 'App\\Admin\\Controllers', 'middleware' => ['web', 'admin'], // 开启 admin.session 中间件 'enable_session_middleware' => true, ], ``` ### 数据表字段设置 Not null 后保存表单时报错 如果数据表字段设置为`not null`,当表单提交的数据是空时,会保存字段值为`null`到数据库,这时就会报错。我们可以通过以下方法解决这个问题 ```php $form->text(...)->saving(function ($v) { // 把字段值类型强转为 string,如果是数值强转为int return (string) $v; }); ``` ### 图片防盗链 图片请求默认会去掉 `referer` 字段,如果有防盗链要求,可以在配置文件(`config/admin.php`)中设置: ``` "disable_no_referrer_meta" => true ``` ### 适配 Laravel-S 自从 Laravel-S 3.7.18 发行版开始,支持使用 DcatAdmin 。 1,`composer require hhxsv5/laravel-s`。 2,执行 `php artisan laravels publish` 发布资源。 3,修改 `config/laravels.php` ,添加以下服务注册和清理器: ``` 'register_providers' => [ \Dcat\Admin\AdminServiceProvider::class, ], 'cleaners' => [ ... Hhxsv5\LaravelS\Illuminate\Cleaners\DcatAdminCleaner::class, ], ``` 4,执行 `php bin/laravels start` 即可使用 swoole 。 ### 为何不开发成前后端分离项目? 最近有很多同学问我为什么不采用前后端分离技术方案,我在这个帖子里回答的非常详细,有相关疑问的同学请[点击此处查看帖子](https://github.com/jqhph/dcat-admin/issues/27),这里不再赘述。
上一文章
下一文章
返回顶部
返回主页
返回文档展示页