構(gòu)、路由與配置變更對照)
laravel-admin 1.5 升級遷移全指南表結(jié)構(gòu)、路由與配置變更對照【免費(fèi)下載鏈接】laravel-adminBuild a full-featured administrative interface in ten minutes項目地址: https://gitcode.com/gh_mirrors/la/laravel-adminlaravel-admin 1.5 對內(nèi)置表結(jié)構(gòu)、路由文件與配置文件進(jìn)行了整體重構(gòu)并移除了內(nèi)置圖表組件。本文以官方升級注意事項為主線逐項對照 數(shù)據(jù)庫遷移文件、路由模板 與 配置文件 的源碼實現(xiàn)為你梳理一份可執(zhí)行、可驗證的升級遷移清單。讀完本文你將掌握 1.5 版內(nèi)置 9 張表的完整結(jié)構(gòu)、新版路由與配置的組織方式以及圖表能力被移除后的自定義替代方案。為什么 1.5 建議重裝再遷移升級文檔給出的核心建議是由于 laravel-admin 1.5 的內(nèi)置表結(jié)構(gòu)發(fā)生修改推薦重新安裝 laravel 5.5 與 laravel-admin 1.5再把業(yè)務(wù)代碼遷移過來而不是在舊版本基礎(chǔ)上原地升級。從 composer.json 可以印證 1.5 的運(yùn)行環(huán)境基線php: 7.0.0laravel/framework: 5.5也就是說如果你仍在使用 laravel 5.4 或更低版本必須先升級 laravel 框架本身這本身就是一個涉及面很廣的工程。同時 1.5 的數(shù)據(jù)庫表、路由注冊方式和配置鍵都發(fā)生了結(jié)構(gòu)性變化新舊數(shù)據(jù)表之間并不保證平滑兼容因此官方給出的路徑是新環(huán)境全新安裝 → 驗證基礎(chǔ)功能 → 再遷移業(yè)務(wù)代碼與數(shù)據(jù)。全新安裝的流程可參考 docs/en/installation.mdcomposer require encore/laravel-admin 1.5.* php artisan vendor:publish --providerEncore\Admin\AdminServiceProvider php artisan admin:install其中admin:install命令見 src/Console/InstallCommand.php會依次執(zhí)行migrate建表并在用戶表為空時調(diào)用db:seed寫入初始管理員數(shù)據(jù)。安裝完成后運(yùn)行php artisan serve訪問http://localhost/admin/使用默認(rèn)賬號admin/admin即可登錄驗證。遷移要點(diǎn)一內(nèi)置表結(jié)構(gòu)變更1.5 對內(nèi)置表結(jié)構(gòu)做了修改遷移時必須以新版遷移文件為準(zhǔn)。新版建表邏輯全部集中在 database/migrations/2016_01_04_173148_create_admin_tables.php并且所有表名都通過config(admin.database.*)動態(tài)讀取也就是說表名本身可以在 config/admin.php 中自定義升級時應(yīng)先確認(rèn)自己的表名配置與遷移文件一致。遷移文件up()方法一共創(chuàng)建 9 張表各表核心字段如下表默認(rèn)名用途關(guān)鍵字段admin_users管理員用戶id、username(190, unique)、password(60)、name、avatar(nullable)、remember_token(100, nullable)、時間戳admin_roles角色id、name(50, unique)、slug(50, unique)、時間戳admin_permissions權(quán)限id、name(50, unique)、slug(50, unique)、http_method(nullable)、http_path(text, nullable)、時間戳admin_menu后臺菜單id、parent_id(默認(rèn) 0)、order(默認(rèn) 0)、title(50)、icon(50)、uri(nullable)、permission(nullable)、時間戳admin_role_users用戶-角色關(guān)聯(lián)role_id、user_id、聯(lián)合索引[role_id, user_id]、時間戳admin_role_permissions角色-權(quán)限關(guān)聯(lián)role_id、permission_id、聯(lián)合索引、時間戳admin_user_permissions用戶-權(quán)限關(guān)聯(lián)user_id、permission_id、聯(lián)合索引、時間戳admin_role_menu角色-菜單關(guān)聯(lián)role_id、menu_id、聯(lián)合索引、時間戳admin_operation_log操作日志id、user_id(索引)、path、method(10)、ip、input(text)、時間戳與舊版對比遷移時尤其要注意以下幾點(diǎn)權(quán)限模型的變化admin_permissions表通過http_method如GET、GET,PUT與http_path支持換行分隔多個路徑text 類型來定義路由級權(quán)限這是 1.5 權(quán)限校驗check_route_permission的數(shù)據(jù)基礎(chǔ)菜單表新增permission字段用于將菜單項綁定到權(quán)限對應(yīng)配置項menu_bind_permission4 張中間表pivot table統(tǒng)一帶有聯(lián)合索引down()方法會按依賴順序依次dropIfExists這 9 張表。down()方法的刪除順序也值得遷移參考先刪用戶、角色、權(quán)限、菜單主表再刪 4 張中間表與操作日志表避免外鍵或索引殘留。初始數(shù)據(jù)的對應(yīng)關(guān)系建表之后的數(shù)據(jù)由 src/Auth/Database/AdminTablesSeeder.php 負(fù)責(zé)填充遷移時這些種子數(shù)據(jù)的結(jié)構(gòu)同樣發(fā)生了變化創(chuàng)建默認(rèn)用戶admin密碼admin、角色Administratorslug 為administrator預(yù)置 5 條權(quán)限*全部權(quán)限、dashboard、auth.login、auth.setting、auth.management預(yù)置 7 條菜單Dashboard 與 Admin 管理分組下的 Users / Roles / Permission / Menu / Operation log建立角色-權(quán)限、角色-菜單的初始關(guān)聯(lián)。如果你在舊版中已有大量 RBAC 數(shù)據(jù)遷移時建議按新表結(jié)構(gòu) → 重新填充權(quán)限與菜單 → 再導(dǎo)入業(yè)務(wù)側(cè)自定義數(shù)據(jù)的順序執(zhí)行避免字段缺失導(dǎo)致的數(shù)據(jù)錯位。遷移要點(diǎn)二路由文件結(jié)構(gòu)變更1.5 將后臺路由的組織方式改為系統(tǒng)內(nèi)置路由 用戶自定義路由分組兩層結(jié)構(gòu)新版模板位于 src/Console/stubs/routes.stub?php use Illuminate\Routing\Router; Admin::routes(); Route::group([ prefix config(admin.route.prefix), namespace config(admin.route.namespace), middleware config(admin.route.middleware), as config(admin.route.prefix) . ., ], function (Router $router) { $router-get(/, HomeControllerindex)-name(home); });與舊版相比新結(jié)構(gòu)包含三個關(guān)鍵變化Admin::routes()注冊內(nèi)置路由登錄、登出、用戶設(shè)置等認(rèn)證相關(guān)路由由這一行統(tǒng)一注冊不再需要在業(yè)務(wù)路由文件中手工編寫路由分組參數(shù)全部來自配置prefix默認(rèn)admin、namespace默認(rèn)App\Admin\Controllers、middleware默認(rèn)[web, admin]與路由命名前綴as都從 config/admin.php 的route段讀取。這意味著修改路由前綴只需調(diào)整配置或設(shè)置ADMIN_ROUTE_PREFIX環(huán)境變量無需改動路由文件業(yè)務(wù)路由只保留一個最小示例分組內(nèi)默認(rèn)只注冊GET /指向HomeControllerindex其余業(yè)務(wù)路由由你在該分組內(nèi)自行追加。安裝時該模板由 src/Console/InstallCommand.php 中的createRoutesFile()方法寫入到app/Admin/routes.php并將DummyNamespace占位符替換為配置中的命名空間。遷移業(yè)務(wù)代碼時只需把你舊版中自定義的路由按新分組規(guī)則遷移到app/Admin/routes.php即可——注意新路由一律使用Route::group(...)config(admin.route.*)的形式不要再硬編碼前綴或中間件。遷移要點(diǎn)三配置文件結(jié)構(gòu)變更1.5 的配置體系集中在 config/admin.php通過vendor:publish發(fā)布到項目config/目錄遷移時請逐段對照。以下是與舊版差異最大、遷移時必須關(guān)注的配置段route 段路由前綴、命名空間與中間件route [ prefix env(ADMIN_ROUTE_PREFIX, admin), namespace App\\Admin\\Controllers, middleware [web, admin], ],prefix支持通過環(huán)境變量ADMIN_ROUTE_PREFIX覆蓋默認(rèn)admin置空則從根路徑訪問middleware中的admin是 laravel-admin 自帶的路由中間件位于 src/Middleware負(fù)責(zé)認(rèn)證、權(quán)限與 Pjax 等邏輯。auth 段認(rèn)證體系auth [ controller App\Admin\Controllers\AuthController::class, guard admin, guards [ admin [ driver session, provider admin, ], ], providers [ admin [ driver eloquent, model Encore\Admin\Auth\Database\Administrator::class, ], ], remember true, redirect_to auth/login, excepts [ auth/login, auth/logout, ], ],遷移時需注意guard采用獨(dú)立的admin會話守衛(wèi)與admin用戶提供者Eloquent 驅(qū)動模型為Administrator與 Laravel 默認(rèn)的web守衛(wèi)相互獨(dú)立redirect_to與excepts用于控制未授權(quán)跳轉(zhuǎn)和免鑒權(quán)路由。database 段表名與模型映射database [ connection , users_table admin_users, users_model Encore\Admin\Auth\Database\Administrator::class, roles_table admin_roles, roles_model Encore\Admin\Auth\Database\Role::class, permissions_table admin_permissions, permissions_model Encore\Admin\Auth\Database\Permission::class, menu_table admin_menu, menu_model Encore\Admin\Auth\Database\Menu::class, operation_log_table admin_operation_log, user_permissions_table admin_user_permissions, role_users_table admin_role_users, role_permissions_table admin_role_permissions, role_menu_table admin_role_menu, ],這是與遷移文件一一對應(yīng)的配置段遷移數(shù)據(jù)前務(wù)必確保這里的表名與遷移創(chuàng)建的表完全一致。connection留空表示使用 Laravel 默認(rèn)數(shù)據(jù)庫連接。operation_log 段操作日志開關(guān)operation_log [ enable true, allowed_methods [GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH], except [ env(ADMIN_ROUTE_PREFIX, admin)./auth/logs*, ], ],enable控制全局開關(guān)allowed_methods限定哪些 HTTP 方法記入日志except支持admin/auth/logs*或get:admin/auth/logs兩種寫法用于排除無需記錄的路徑。注意默認(rèn)排除了日志查看頁面自身避免日志表被自身查詢刷爆。其他遷移相關(guān)配置directory后臺安裝目錄默認(rèn)app_path(Admin)必須在運(yùn)行admin:install之前修改才生效見 config/admin.php 的注釋bootstrap引導(dǎo)文件路徑默認(rèn)app/Admin/bootstrap.php用于引入自定義 JS/CSS 或注冊擴(kuò)展check_route_permission、check_menu_roles是否啟用路由權(quán)限校驗與菜單角色校驗upload上傳磁盤與圖片/文件目錄disk admin對應(yīng)config/filesystem.php中的磁盤skin、layout、show_version、show_environment等界面相關(guān)配置可直接沿用舊值。遷移建議把舊項目的自定義配置逐鍵對照寫入新版config/admin.php對已刪除或改名的鍵尤其是圖表相關(guān)、舊表名相關(guān)配置進(jìn)行清理避免配置殘留影響運(yùn)行。遷移要點(diǎn)四圖表組件已移除如何替代1.5 已移除全部內(nèi)置圖表組件舊版中直接依賴圖表組件的代碼將無法繼續(xù)使用。官方給出的替代思路是引入第三方圖表庫 自定義視圖完整示例見 docs/en/custom-chart.md核心流程分三步第一步下載圖表庫并放到 public 目錄。以 Chart.js 為例將其放入public/vendor/chartjs目錄。第二步在引導(dǎo)文件中引入 JS。編輯app/Admin/bootstrap.phpuse Encore\Admin\Facades\Admin; Admin::js(/vendor/chartjs/dist/Chart.min.js);Admin::js()是 laravel-admin 的靜態(tài)資源注入接口會讓該 JS 在所有后臺頁面加載。第三步創(chuàng)建圖表視圖并在控制器中輸出。新建resources/views/admin/charts/bar.blade.php放置 Canvas 畫布與 Chart.js 初始化腳本然后在控制器中使用Admin::content()將視圖渲染到頁面內(nèi)容區(qū)public function index() { return Admin::content(function (Content $content) { $content-header(chart); $content-description(.....); $content-body(view(admin.charts.bar)); }); }通過這種引入任意前端圖表庫 自定義 blade 視圖 $content-body()輸出的組合可以完全替代舊版內(nèi)置圖表。多圖表頁面的布局組織方式可進(jìn)一步參考 docs/en/content-layout.md 中的布局機(jī)制。遷移時只需把舊項目中調(diào)用內(nèi)置圖表組件的代碼替換為上述模式即可。升級遷移核對清單結(jié)合以上四點(diǎn)整理一份可直接執(zhí)行的遷移清單環(huán)境準(zhǔn)備確認(rèn) PHP ≥ 7.0、Laravel ≥ 5.5見 composer.json 依賴聲明新建干凈的 Laravel 5.5 項目全新安裝composer require encore/laravel-admin 1.5.*→php artisan vendor:publish --providerEncore\Admin\AdminServiceProvider→ 修改 config/admin.php 中directory、database等配置 →php artisan admin:install表結(jié)構(gòu)核對對照 database/migrations/2016_01_04_173148_create_admin_tables.php 確認(rèn) 9 張表與配置表名一致按新結(jié)構(gòu)重建 RBAC 數(shù)據(jù)參考 src/Auth/Database/AdminTablesSeeder.php路由遷移將舊版自定義路由遷移到app/Admin/routes.php采用 src/Console/stubs/routes.stub 的分組寫法參數(shù)一律讀取config(admin.route.*)配置遷移逐段對照 config/admin.php同步route、auth、database、operation_log等段刪除舊版廢棄配置鍵圖表替換將依賴內(nèi)置圖表組件的頁面改為Chart.js 等第三方庫 自定義視圖 $content-body()方案詳見 docs/en/custom-chart.md驗證php artisan serve后訪問http://localhost/admin/使用admin/admin登錄逐頁回歸菜單、權(quán)限、表單與操作日志功能。按此清單執(zhí)行即可在保留業(yè)務(wù)代碼的基礎(chǔ)上平穩(wěn)完成從舊版本到 laravel-admin 1.5 的整體遷移?!久赓M(fèi)下載鏈接】laravel-adminBuild a full-featured administrative interface in ten minutes項目地址: https://gitcode.com/gh_mirrors/la/laravel-admin創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考