遷移步驟
最近發現挺多同學對專案如何從laravel-admin
遷移到dcat-admin
有疑問,所以下面為大家講解一下遷移的實操步驟,其實兩者用法基本大同小異,需要改動的程式碼會很少。
大家也可以在這裡反饋遷移中遇到的問題,我有時間會一一幫助大家解決。
1.新建一個程式碼分支
這個步驟不用多解釋,大家都明白。如果你用的版本管理軟體不是git
,也可以把你的程式碼複製出來作為一個新專案。
2.安裝dcat-admin
- 需要先解除安裝
encore/laravel-admin
,並且解除安裝一切laravel-admin
的相關外掛,然後安裝dcat/laravel-admin
,推薦安裝最新版本// 先解除安裝laravel-admin的所有相關外掛 // 然後執行 composer remove encore/laravel-admin composer require dcat/laravel-admin
- 安裝完之後需要全域性替換名稱空間字首,把
Encore\Admin
替換為Dcat\Admin
- 刪除
public/vendor
目錄檔案,並且備份配置檔案config/admin.php
命名為config/admin.bak.php
,最後重新發布資源php artisan admin:publish --force
- 最後修改配置檔案
config/admin.php
,把你自定義過的引數重新寫上
2.更改表結構
上面的安裝步驟完了之後就可以調整表結構了,首先建立新的遷移檔案
php artisan make:migration UpdateAdminTables
然後開啟,並寫入以下內容
<?php
use 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
3.修改bootstrap.php
然後需要開啟app/Admin/bootstrap.php
,如果其中有Grid
、Form
、Show
等等的初始化操作、以及頂部導航欄設定的功能,都需要做點改動,具體請參考文件。
也可能會有其他方法不相容,可以看一下編輯器是否有標黃提示。
4.控制器
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
提交,所以表單事件用法有所不同,需要查閱文件
5.模型
如果你使用的是laravel7
,需要在你的模型中加上以下程式碼
use Dcat\Admin\Traits\HasDateTimeFormatter;
class User extend Model
{
use HasDateTimeFormatter;
}
6.自定義view
如果你在專案中使用了自定義view
,並且在view
裡面寫了js
程式碼,則需要做以下處理
...
<script>
Dcat.ready(function () {
// 把你的js程式碼放到這裡面
});
</script>
7.使用了action form
如果你使用了laravel-admin
的彈窗表單功能,需要做點調整,具體使用可參考文件工具表單
結語
以上列出的只是主要的不同點,上面的步驟操作完成之後仍需要手動測試全部功能,然後如果有問題則對照文件進行調整。
Dcat Admin是一個基於laravel-admin二次開發而成的後臺系統構建工具,只需很少的程式碼即可快速構建出一個功能完善的高顏值後臺系統。內建豐富的後臺常用元件,開箱即用,讓開發者告別冗雜的HTML程式碼,對後端開發者非常友好。
線上演示站點 | LearnKu官方文件 | Github主頁(如果喜歡這個專案不妨點個star,感謝支援!)
本作品採用《CC 協議》,轉載必須註明作者和本文連結