Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
發(fā)于推薦超好用的 6 款 Laravel Admin 管理模版 | 碼匠技術(shù)博客
如果您正在為您的企業(yè)調(diào)研開發(fā) Admin 管理后臺的最佳方案,那么基于 PHP 的 Laravel 框架會是一個不錯的選擇,它靈活且易用,還提供了一系列開發(fā)規(guī)范和組件加速我們的開發(fā)。而在這篇文章中,碼匠將為您介紹幾款專門基于 Laravel 打造的美觀且常用的 Admin 管理后臺模板,這些模板提供了很多開箱即用的功能,不僅確保您可以輕松啟動并運行一個 Admin 后臺,還為您節(jié)省了大量開發(fā)時間。
Laravel Admin 管理后臺模板的不同類型
在搜索引擎中粗略搜索,你會得到大概 20多種 Laravel Admin 模板的選項,盡管它們表面上看起來很相似,但實際上在用途和架構(gòu)存在著很大差異。在碼匠為大家介紹一些受歡迎選項的具體功能前,讓我們先了解 Laravel Admin 模板五個不同的種類,以便結(jié)合自身需求更好地做出判斷:
腳手架主要是通過程序,自動化地創(chuàng)建啟動和運行所需的文件和配置來生成 Laravel 樣板。例如,假設(shè)您想為您的活動業(yè)務(wù)創(chuàng)建一個管理后臺,主要涉及的領(lǐng)域?qū)嶓w為事件、發(fā)言人和與會者,腳手架軟件包不僅可以自動為每個實體生成模型、控制器、路由、視圖等,還包括了 CRUD 操作,這將為您節(jié)省乏味又重復(fù)地手動創(chuàng)建這些樣板的時間。但是,腳手架只能在開始一個項目時才有用,如果您在初始設(shè)計中犯了錯誤,后續(xù)則很難進(jìn)行更改和調(diào)整。腳手架軟件包的一個例子可以參考 InfyOm Laravel Generator。
Laravel 開發(fā)準(zhǔn)備之安裝腳手架
Laravel 框架遵循 MVC(模型-視圖-控制器)模式,提供 CRUD 接口是 Laravel Admin 模板的一種流行架構(gòu)方法。這些是視圖和控制器的集合,可以自動添加 CRUD 邏輯和 UI 到現(xiàn)有的模型中。這種結(jié)構(gòu)提供了一種快速獲得模塊化管理后臺的方法,它可以輕松地添加到一個新的應(yīng)用程序中,或改裝到一個現(xiàn)有的應(yīng)用程序中。一些流行的支持該功能的 Laravel 管理模板包括 Nova、Backpack 和 Orchid 等。
但缺點是,如果您業(yè)務(wù)上有著復(fù)雜的模型關(guān)系,可能很難讓它按照您的要求來工作。
一個可視化的編程平臺能夠允許您單純從一個圖形用戶界面 (GUI) 來管理您的站點,這有點像 CMS,但可以添加更詳細(xì)的站點配置。
當(dāng)您的團(tuán)隊有非開發(fā)人員時,一個可視化的編程平臺會是一個不錯的選擇,但這些軟件包通常局限在通用功能上。這種類型的后臺模板的例子是 Voyager 和 Backpack DevTools。
一些管理后臺模板只關(guān)注用戶界面,即組件庫、主題等等,例如 Creative Tim 的 Argon 管理模板 不提供任何 CRUD 接口或生成器,但提供很多對管理應(yīng)用程序有幫助的詳細(xì)的前端組件——如表格、圖表、菜單等。
如果您的應(yīng)用程序已經(jīng)有了一套完善的后端邏輯,或者后端邏輯希望自己編寫,那么這種類型的工具就會很有用。
管理后臺模板的另一個不同之處在于它們是付費的還是免費(開源)的,免費的固然是大家所傾向的,但付費軟件往往提供更強大的業(yè)務(wù)模型與客服支持。
如果您的目標(biāo)是開發(fā)一個既能省錢又能省時的工具,那么花少量的錢買一個付費項目可能更適合。如果不希望花錢,那么找一個開源并且有著更活躍的社區(qū)的模板是一個更好的選擇。
碼匠
在您深入了解多種 Laravel Admin 模板之前,不妨先了解下碼匠,碼匠是一款開發(fā)者友好的低代碼平臺,您無需了解 React 開發(fā)、部署等各種細(xì)節(jié),就可以快速打通前后端連接 REST API、MySQL、MongoDB 等多種數(shù)據(jù)源,然后通過一套開箱即用的組件,就可以輕松搭建功能完善的數(shù)據(jù)看板、數(shù)據(jù)洞察、Admin 管理后臺等多種應(yīng)用。
使用碼匠快速搭建 CRM 系統(tǒng)(具體可參考:https://majiang.co/templates/mysql-crm)
碼匠主要面向國內(nèi)用戶,相較于國外開發(fā)的 Admin 后臺工具,碼匠的 UI 界面設(shè)計更加適合國內(nèi)業(yè)務(wù)場景。同時碼匠整合了多款國內(nèi)常見數(shù)據(jù)源,包括飛書、企業(yè)微信、釘釘、阿里云 OSS等。不僅如此,碼匠還一站式提供了企業(yè)內(nèi)部系統(tǒng)常用的租戶管理、細(xì)粒度的權(quán)限控制、審計日志等功能,讓您快速搭建后臺應(yīng)用的同時,也為您的企業(yè)信息安全保駕護(hù)航。
Laravel Admin 管理后臺模板推薦
了解了區(qū)分 Laravel 管理后臺模板的一些主要因素后,碼匠將具體介紹和比較 Laravel 中一些流行的軟件包:Nova、Orchid、Backpack、Argon 和 InfyOm Laravel Generator,以便您更好地了解 Laravel Admin 模板并選擇出一款適合您的項目。
Laravel 官方提供的 Admin 管理模板是 Nova,它主要是由 Laravel 的作者 Taylor Otwell 創(chuàng)建的。它的首次發(fā)布是在 2018 年,相對來說較晚。Nova 的架構(gòu)是一個CRUD 界面,只需很少的配置就能允許用戶完全從 UI 界面管理他們的數(shù)據(jù)庫記錄。
Nova 提供可配置的 UI 功能,例如搜索、過濾和自定義操作。這些功能開箱即用,也可以在前端和后端進(jìn)行自定義(Nova 使用 Vue.js 作為前端組件)。
在 Nova 中向模型添加 CRUD 操作的機制被稱為資源,這些是您可以在命令行上創(chuàng)建的類似控制器的類,例如要創(chuàng)建一個 Post 資源:php artisan nova:resource Post,一個新類會顯示在您項目的 app/Nova 目錄中,不僅如此,它還會自動顯示在 Nova 模板中供您使用。通常大多數(shù) Laravel 模型在 Nova 中工作無需任何額外的配置,但您可以定義具體的細(xì)節(jié),如字段如何被編輯等。
此外,Nova 另一個值得關(guān)注的特點是允許您在一個或多個模型上執(zhí)行自定義任務(wù)。例如您可以編寫一個將用戶的會員訂閱延長一個月的操作,先在資源文件中編寫這方面邏輯,再在用戶界面中檢查,然后從動作下拉列表中選擇操作。
Orchid 主要由俄羅斯開發(fā)者 Alexandr Chernyaev 開發(fā),是 Laravel 框架的開源 CRUD 接口包,允許您使用表單生成器、表格過濾和排序以及文本搜索等便利的功能來快速開發(fā)管理模板。
Orchid 最吸引人的是它的開源社區(qū),在沒有任何付費項目的情況下能夠維護(hù)好其完善的功能。
與 Nova 的開箱即用不同,Orchid 需要您通過名為 screen 的類來創(chuàng)建管理模板的邏輯和外觀。每個模板都為特定模型定義 CRUD 接口,可以從任何來源獲取數(shù)據(jù),包括 Eloquent 模型以及外部 API。此外,您還可以通過布局和組件來自定義屏幕的查詢和權(quán)限以及視圖層。
雖然這比使用 Nova 需要更多的手動操作,但它非常靈活,易于迭代和定制。
Backpack 是羅馬尼亞開發(fā)者 Cristian T?b?citu 于 2016 年創(chuàng)建的一個 Laravel Admin 項目。它是一個強大的全能工具,因為它不僅有一個 CRUD 接口包,還有一個可選的可視化編程界面,以及它自己的 UI 框架。鑒于這種多功能性,Backpack 不是免費的,但可以為非商業(yè)用途提供免費許可。
與 Nova 和 Orchid 類似,Backpack 的核心是為應(yīng)用程序的模型(簡稱CRUDS)提供一個 CRUD 接口,這些是管理模板的部分,操作由添加到標(biāo)準(zhǔn) Laravel 類的方法和特點來定義。您可以從命令行生成 CRUDS,或者可以使用 Backpack DevTools 工具,它提供了一個 Web 界面,可以從用戶界面快速生成 CRUDS。
Backpack 擁有自己的 UI 軟件包,叫為Backstrap。這是基于 CoreUI 和 Bootstrap 4 的,能夠確保您的管理站點在沒有任何配置的情況下看起來整潔專業(yè)。
與我們目前看到的其他管理模板包不同,Voyager 是 Laravel Admin 應(yīng)用的可視化開發(fā)平臺,允許您從 UI 生成而不用敲代碼。這對于某些類型的項目來說可能是完美的,但您會被限制在一個拓展性有限的 GUI 中,其靈活性遠(yuǎn)遠(yuǎn)低于代碼。
Voyager 提供了一個資源管理器,無論文件是在本地存儲中還是在 S3 等遠(yuǎn)程存儲中,您都可以從 UI 中查看、編輯和刪除這些文件。它不僅有一個菜單生成器,允許您管理網(wǎng)站的菜單,還有一個數(shù)據(jù)庫管理器,允許您添加、編輯和刪除表格。Voyager 是圍繞 BREAD 功能構(gòu)建的,您可以指示任何表的瀏覽、讀取、編輯、添加和刪除功能。
每當(dāng)設(shè)置 Laravel 項目時,都需要定義每個實體的模型、控制器、路由和視圖,這也許很乏味并且需要大量時間。
InfyOm Laravel Generator 是由印度開發(fā)公司 InfyOm 創(chuàng)建的工具,它是為創(chuàng)建 Laravel 管理網(wǎng)站而制作的,可以在幾分鐘內(nèi)將您所有的模板代碼構(gòu)建起來。
開始一個項目時,您需要使用 CLI 或 JSON 文件定義事件及其字段,完成后您可以開始編寫腳手架腳本,比如:php artisan infyom:scaffold $MODEL_NAME --fieldsFile=mySchema.json,之后生成器將嘗試創(chuàng)建所有的文件和內(nèi)容,以實現(xiàn)完整的CRUD功能,包括模型、控制器、組件模版、路由、測試案例、數(shù)據(jù)表等,完成這些后,就會有一個按照您的要求配置出的 Laravel 管理網(wǎng)站。
Argon Laravel Dashboard 是一個基于 Bootstrap 4 的管理模板,為 Laravel 打造。其專業(yè)版(149 美元授權(quán))含有 100+ 靈活的組件,如圖表、表格等。Argon 包含一個 Laravel 后端,但非常初級,它不包括我們在其他項目中看到的用于 CRUD 接口、腳手架或可視化編程的任何特殊包。出于這個原因,我認(rèn)為這個產(chǎn)品最適合那些想自己編寫后端邏輯,且主要想在視圖層得到幫助的項目。
Argon 設(shè)計系統(tǒng)基于Bootstrap 4 ,并允許使用 Sass 預(yù)處理器輕松自定義 CSS 。它提供了 100 多個 UI 組件,
從按鈕和表單輸入到圖表和圖片輪播。
購買 Argon 時,您可以決定要為哪個前端庫編寫交互方面的內(nèi)容,包括 jQuery、React、Vue 和 Svelte。Argon 還為 Laravel 后端提供了一些基本的 CRUD 實體,包括用戶、角色、類別和項目。
寫在最后
在使用 Laravel 構(gòu)建管理模板時有多種選擇,每個工具都有自己的優(yōu)點和缺點,您選擇的工具將取決于您項目的具體要求以及您團(tuán)隊的優(yōu)勢。
本文為原創(chuàng)內(nèi)容,版權(quán)歸「碼匠Majiang」所有。歡迎文末分享、點贊、在看三連。轉(zhuǎn)載請聯(lián)系后臺~
本來講完路由和控制器,應(yīng)該接著講一講視圖的,但是鑒于視圖的功能實在太枯燥,況且是前端頁面,免不了寫一些js和css。而laravel是偏重后端的,所以為了給后端的開發(fā)同學(xué)緩沖的時間,我們跳過視圖,先來說說用戶數(shù)據(jù)的獲取和處理,這幾乎是任何應(yīng)用必備之功能。
用戶數(shù)據(jù)同時又是危險的!本文不會教你規(guī)避危險!
我們在講路由規(guī)劃的時候,說了如何使用url的位置參數(shù)綁定的方式進(jìn)行導(dǎo)向,其實那也是一種獲取用戶輸入數(shù)據(jù)的方式, 只不過,傳入的位置參數(shù)一般都人畜無害,公開訪問,任你來來往往。
如果是單個用戶的私密數(shù)據(jù),必然是不能直接url內(nèi)嵌傳輸?shù)摹?/p>
laravel把用戶的輸入存儲在 Input 對象內(nèi),而從邏輯上看,用戶輸入應(yīng)該歸屬于請求項的,所以 Request 也繼承了 Input 的方法和數(shù)據(jù)。 比如有下面的路由:
Route::post('form', function (Illuminate\Http\Request $request) {
// $request->method()
});
模擬的是一個表單地址,通過post方法傳送數(shù)據(jù),然后使用 Request 方法。可供使用的獲取方法,我們一一道來。
先說說 $request->all(),這一個是打印所有的輸入數(shù)據(jù),比如表單內(nèi)可能有下面這些字段。HTML 內(nèi)容你們將就看一下哈!
<form method="post" action="/post-route?utm=12345">
{{ csrf_field() }}
<input type="text" name="firstName">
<input type="submit">
</form>
為了調(diào)試數(shù)據(jù),我們的路由這樣注冊:
Route::post('/post-route', function (Request $request) {
var_dump($request->all());
});
大家猜猜會輸出些什么內(nèi)容呢?
/**
* [
* '_token'=> 'CSRF token here',
* 'firstName'=> 'value',
* 'utm'=> 12345
* ]
*/
沒錯兒,就是看到的post表單的字段 firstName,還有 querystring 的查詢參數(shù) utm,還有一個是用于 CSRF 防護(hù)的laravel內(nèi)置函數(shù),默認(rèn)的表單字段就是 __token,所以大可不必費心。
但是有代碼潔癖的同學(xué)會覺得受不了,這個不是我的字段,我在代碼里也用不到,我不想看到這個 __token,這個陌生的變量。可以,我們在請求參數(shù)內(nèi)直接過濾掉就好了:
Route::post('/post-route', function (Request $request) {
var_dump($request->except('_token'));
});
其中,except() 方法就是用來過濾某些字段,不需要使用的。與之對應(yīng)的就是 only() 方法,是指定哪些是用的字段。這樣用:
$request->only(['firstName', 'utm']);
還有些時候邏輯判斷有些鍵是否存在,laravel提供了兩種方式判斷是否存在,一個是 has ,一個是 exists。有同學(xué)會疑問,為什么有了 has還要 exists呢?因為他們的作用不同。
has方法不僅會判斷該鍵存在,如果該鍵的值是 空(比如 null,空字符串,false,0,空數(shù)組,空對象等等),也是判斷為false的。所以就有必要使用 exists 單純地判斷鍵的存在與否,大家用的時候一定要注意這個細(xì)微的差別。
用法很簡單,直接調(diào)用方法即可:
if ($request->has('utm')) {
// Do some work
}
如果對于輸入值鍵不存在,我們也可以為其設(shè)置一個默認(rèn)值,這就是 input 方法的第二個參數(shù),使用如下調(diào)用:
Route::post('/post-route', function (Request $request) {
$userName=$request->input('name', 'anonymous');
});
如果用戶沒有傳入 name 字段,那么就用 anonymous 替代。
上面說的都是簡單的鍵值對,還有一種表單,傳入的字段可能會是數(shù)組,比如下面這個:
<form method="post" action="/post-route">
{{ csrf_field() }}
<input type="text" name="employees[0][firstName]">
<input type="text" name="employees[0][lastName]">
<input type="text" name="employees[1][firstName]">
<input type="text" name="employees[1][lastName]">
<input type="submit">
</form>
laravel內(nèi)獲取數(shù)組可以使用點式方式讀取,這是因為laravel解析的時候使用了助手類 Arr 的通用方法。比如獲取某個鍵:
$employeeZeroFirstName=$request->input('employees.0.firstName');
明確地指定鍵名,并對應(yīng)好層級即可。還可以使用星號匹配某一層級所有的鍵:
$allLastNames=$request->input('employees.*.lastName');
或者僅指定某個鍵,后面不管多少層級原樣返回:
$employeeOne=$request->input('employees.1');
具體用法讀者可以查看源碼或文檔,深入研究一下Arr操作類的用法。
本文幾乎涵蓋了用戶輸入input方法的最為常用的一些方法,我們只講了怎么正常地獲取用戶數(shù)據(jù),沒有講如何驗證數(shù)據(jù)有效性。因為前端驗證幾乎形同虛設(shè),最后能寫到數(shù)據(jù)庫的數(shù)據(jù),還是要應(yīng)用程序把關(guān)。
那就是驗證器的工作了,驗證器,我們放到后續(xù)章節(jié)再詳細(xì)地講。
Happy coding :-)
我是@程序員小助手,專注編程知識,圈子動態(tài)的IT領(lǐng)域原創(chuàng)作者
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。