最近发现挺多同学对项目如何从laravel-admin迁移到dcat-admin有疑问,所以下面为大家讲解一下迁移的实操步骤,其实两者用法基本大同小异,需要改动的代码会很少。
大家也可以在这里反馈迁移中遇到的问题,我有时间会一一帮助大家解决。
这个步骤不用多解释,大家都明白。如果你用的版本管理软件不是git,也可以把你的代码复制出来作为一个新项目。
// 先卸载laravel-admin的所有相关插件 // 然后运行 composer remove encore/laravel-admin composer require dcat/laravel-admin
php artisan admin:publish --force
上面的安装步骤完了之后就可以调整表结构了,首先创建新的迁移文件
php artisan make:migration UpdateAdminTables
然后打开,并写入以下内容
<?phpuse Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;use Illuminate\Support\Facades\Schema;class UpdateAdminTables extends Migration{ public function getConnection() { return config('admin.database.connection') ?: config('database.default'); } public function up() { Schema::table(config('admin.database.permissions_table'), function (Blueprint $table) { $table->integer('parent_id')->default(0); $table->integer('order')->default(0); }); } public function down() { Schema::table(config('admin.database.permissions_table'), function (Blueprint $table) { $table->dropColumn('parent_id'); $table->dropColumn('order'); }); }}
最后运行以下命令更改表结构
php artisan migrate
然后需要打开app/Admin/bootstrap.php,如果其中有Grid、Form、Show等等的初始化操作、以及顶部导航栏设置的功能,都需要做点改动,具体请参考文档。
也可能会有其他方法不兼容,可以看一下编辑器是否有标黄提示。
1.关联模型使用调整,需要检查grid、form和show是否有使用关联模型,如果有的话需要进行以下改动
// 表格$grid = new Grid(Model::with([...]));// 表单$form = new Form(Model::with([...]));// 数据详情$show = new Show($id, Model::with([...]));
这里可能会有很多同学会有疑问,为什么要显式的声明关联关系,像laravel-admin那样自动判断不好吗?其实这样设计也是有原因的,主要是为了解决下面这样的问题
return Form::make(Model::with('...'), function (Form $form) { // 主要是为了实现在这个闭包中能拿到模型数据的功能 // 而这个功能需要在回调执行之前就把数据查询出来,所以无法做到自动判断关联模型 if ($form->model()->username) { ... } else { ... }});
2.grid表格的数据导出方法用法有所不同,需要查阅文档
3.form表单提交已经改成ajax提交,所以表单事件用法有所不同,需要查阅文档
如果你使用的是laravel7,需要在你的模型中加上以下代码
use Dcat\Admin\Traits\HasDateTimeFormatter;class User extend Model{ use HasDateTimeFormatter;}
如果你在项目中使用了自定义view,并且在view里面写了js代码,则需要做以下处理
...<script>Dcat.ready(function () { // 把你的js代码放到这里面});</script>
如果你使用了laravel-admin的弹窗表单功能,需要做点调整,具体使用可参考文档工具表单
以上列出的只是主要的不同点,上面的步骤操作完成之后仍需要手动测试全部功能,然后如果有问题则对照文档进行调整。
Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需很少的代码即可快速构建出一个功能完善的高颜值后台系统。内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码,对后端开发者非常友好。
在线演示站点 | 官方文档 | Github主页(如果喜欢这个项目不妨点个star,感谢支持!)