開發者很懶。對,我不是在開玩笑。他們努力創造能夠幫助他們在將來避免更多工作的系統。特別是重複的工作。現在有相當極端的例子。例如我們不需要再編寫程式碼,它正在為我們生成。今天我們將看看 Laravel 框架的各種管理皮膚和後端專案構建器的示例。他們能解放我們多少時間?
免責宣告:我是這些構建器之一的創始人: QuickAdminPanel,但是對於這篇文章,我儘可能保持誠實和公正。他們都是非常偉大的競爭對手,他們值得我尊敬他們。(PS: 無力吐槽,怎麼搞的跟決鬥一樣)
有兩大組管理皮膚生成器:視覺化構建器 和 基於控制檯。無論您是喜歡使用 GUI 還是使用引數輸入 Artisan 命令,選擇都取決於您的喜好。
此外,這裡需要了解的一個重要術語是 CRUD,這個縮寫代表 Create,Read,Update,Delete。這些操作是所有管理皮膚的基礎。一個 CRUD 通常代表一個模型和一個選單項來管理這些資料。
重要通知:以下所有工具都使用Laravel 5.3進行測試。在撰寫本文時,要求官方提供 5.4 版本的支援還為時尚早。
視覺化管理皮膚構建器
Voyager: The Missing Laravel Admin
這款產品雖然相當新,卻給我留下了最深的印象。它已經有了很多的粉絲,之前已經在 Laravel News 上提到過,並且擁有自己的 Youtube 教學視訊。
Voyager 以優雅和專業的介面脫穎而出,但主要的一點是,它只是工作。清楚的使用說明,友好的前端主題,沒有明顯的錯誤或未完成的部分,這就是 Voyager。使用像船長的照片或輪船的圖示,使整體看起來不錯。
另一個明智的決定是在安裝過程中有一個引數 “dummy-data” - 你可以讓你的管理皮膚預先填寫條目來玩。
Voyager 還有一個檔案管理系統來管理所有你上傳的檔案,這真的很方便,並有助於在其他管理皮膚建設者中脫穎而出。
最後,在 Voyager 的幫助下,您還可以直接從管理皮膚更改資料庫表格,這是您的後端應用程式中的一種迷你 phpMyAdmin。
總而言之,Voyager 似乎是市場上最精緻的解決方案,但是如果不維護或更新一段時間,這種情況很容易發生變化,這種情況在開源軟體包中經常發生。
LaraAdmin: Admin Panel + CRM
這是另一個讓我印象深刻的專案。安裝並登入到管理皮膚後,您可以直觀地建立代表您的 CRUD 的模組。根據作者的說法,模組化系統受到 SugarCRM的 的啟發。
只需點選幾下滑鼠,您就可以為您的模型生成資料庫遷移,同時還可以單獨或根據需要生成 CRUD。
LaraAdmin 附帶了相當多的預定義模組。他們可以幫助您瞭解系統,但另一方面,如果我必須從頭開始建立專案,則需要一些時間才能改變 LaraAdmin 的預設設定。
和上面的 Voyager 一樣,LaraAdmin 有上傳模組。基本上,這是一個用於上傳的內部瀏覽器。
對於前端檢視,LaraAdmin 使用非常流行的主題 AdminLTE。(它實際上已經被大多數管理皮膚使用,變成了一種市場標準)。
QuickAdmin: Package and Online Generator
這個包非常簡單 - 安裝完成後,可以建立 CRUD 或非 CRUD 的選單項,並指定 欄位 和 角色/許可權。這個 Readme 中的所有工具中都有可能最短的自述檔案。
QuickAdmin 的一個重要里程碑是 管理皮膚生成器的線上版本,而 不是作為您現有專案的Laravel軟體包,該生成器構建了整個 Laravel 專案供您下載和使用。所以你沒有任何包依賴,也不需要學習這個特定包的任何語法。
非視覺化管理皮膚製造商
Z-song / Laravel-admin
這個包幾乎在兩個類別之間 - 生成器的一部分實際上是視覺化的,所以你可以在你的管理皮膚中建立新的選單項,但是對於大部分的過程,你將不得不手動編寫程式碼,如:
php artisan admin:make UserController --model=App\\User
$router->resource('users', UserController::class);
use Encore\Admin\Grid;
use Encore\Admin\Facades\Admin;
$grid = Admin::grid(Movie::class, function(Grid $grid){
這是基於視覺和基於程式碼的生成器之間的根本區別 - 對於後者,你需要學習它們的語法,一些規則並使用。如果你想在這個包的基礎上建立一些自定義的東西,這可能會非常棘手。不過,Z-Song
包真的效果很好。
它還提供了其他功能,如模型網格,模型表單,模型樹,甚至是預製的小部件。
InfyOm Laravel Generator
它有一個令人印象深刻的口號:“在幾分鐘內準備好您的API和管理皮膚”,所以他們首先強調 API,而不是管理皮膚。為此,他們有一個單獨的 API生成器,可以作為管理皮膚的一部分,或作為一個獨立的。不僅如此,他們還會為API 生成 Swagger註釋。
雖然 InfyOm Generator 是不可視的(他們聲稱他們正在 GUI 上工作),但它提供了三種不同的選項來指定 CRUD 引數:控制檯,JSON檔案或現有的 資料庫表。是的,你可以為已經存在的表生成 CRUD,是不是很酷?
這個生成器的一個有趣的功能是它使用 Repository 模式生成程式碼,所以你的控制器看起來像這樣:
class BookController extends AppBaseController
{
/** @var BookRepository */
private $bookRepository;
public function __construct(BookRepository $bookRepo)
{
$this->bookRepository = $bookRepo;
}
/**
* Display a listing of the Book.
*
* @param Request $request
* @return Response
*/
public function index(Request $request)
{
$this->bookRepository->pushCriteria(new RequestCriteria($request));
$books = $this->bookRepository->all();
return view('books.index')
->with('books', $books);
}
這可能是一件非常好的事情,但是如果你不想使用 Repository,那麼這就有點複雜了。InfyOm 最大的好處是通過使用這種模式,可以為您生成測試案例。
就前端而言,InfyOm提供了四種模板可供選擇:AdminLTE,Metronic,Bootstrap 和 FlatLab。
InfyOm 最大的問題(就像大多數非視覺化的生成器一樣),你必須嚴格遵守它們的語法規則。他們在文件中明確指出:“仔細閱讀文件,並以指定欄位輸入。” 但是如果在引數中輸入錯誤錯誤的欄位,沒那麼這個生成器將像魔術一樣工作。(對,你沒看錯,就是魔術! ?)
AppzCoder:CRUD 生成器+管理皮膚
這個包是兩個產品合併在了一起,有獨立的 CRUD 生成器和 Laravel 管理皮膚。它的官方文件說要求 Laravel 5.1,但在測試期間它也在 5.3 版本上工作。
安裝之後,你會得到一個預設的 Laravel 引導主題檢視,並可以使用具有字首 crud: [command] 的 Artisan 命令逐個手動新增 CRUD 。
他們的官方檔案中的一個例子:
php artisan crud:generate Posts --fields="title#string; content#text; category#select#options=technology,tips,health" --view-path=admin --controller-namespace=Admin --route-group=admin
如果這對您來說太難了,您可以在 JSON 檔案中提供欄位詳細資訊,然後將其指定為命令的引數。
您也可以分別生成不同的檔案,如下所示:
php artisan crud:controller PostsController --crud-name=posts --model-name=Post --view-path="directory" --route-group=admin
php artisan crud:model Post --fillable="['title', 'body']"
生成 CRUD 之後,您可以在程式碼中自己指定所有的細節 - 在哪裡放置選單項,要使用什麼中介軟體/角色等等。所以,這個生成器將只為您的管理皮膚做一部分工作。
Backpack for Laravel
這其實是一個龐大的專案。它不僅僅是一個管理皮膚生成器,而且它具有獨立包的便利結構:Base,CRUD,LogManager,BackupManager 等。作者聲稱 Backpack 適用於建立演示網站,創業公司和複雜的網路應用程式。
注意:Laravel News文章中 已經提到 Backpack,包括使用案例和概述。
除了 CRUD 生成器之外,它已經預先構建了 CRUDs 許可權管理器,設定,頁面管理器,新聞管理器和選單管理器。另外,Backpack 系列中的一些軟體包可以作為擴充套件:日誌,備份和一些其他功能可以很容易地新增到您的應用程式。
然而,Backpack 的問題在於它的嚴格性 - 你必須在控制器程式碼中描述CRUD的所有功能,它可能是這樣的:
class TagCrudController extends CrudController {
public function setup() {
$this->crud->setModel("App\Models\Tag");
$this->crud->setRoute("admin/tag");
$this->crud->setEntityNameStrings('tag', 'tags');
$this->crud->setColumns(['name']);
$this->crud->addField([
'name' => 'name',
'label' => "Tag name"
]);
}
雖然在控制器方法中設定所有東西可能看起來很方便,但是如果你想在其上建立任何自定義的東西,你將不得不自己編寫。公平地說,這適用於本系列中的大部分軟體包 - 您必須處理依賴關係,也許 Backpack 是這裡最嚴格的一個。
值得一提的是 Backpack 不提供免費的商業用途。作者用一種人性化的方式來形容它:“如果你不想花錢就可以免費,如果你這樣做便宜”(它的價格為 $19)。
SleepingOwl Admin
這可能是這個列表中最古老的軟體包之一,但仍然在積極維護 - 這個軟體包是由俄羅斯公司建立的,你可以在文件的某些部分看到俄語,提交訊息和其他文字。但它並沒有妨礙實際使用 SleepingOwl。這個軟體包非常強大。
和其他情況一樣,在這裡你必須使用這個包的語法,是在 SleepingOwl 中新增一個選單的方法:
Admin::menu()->url('/')->label('Start Page')->icon('fa-dashboard')->uses('\App\HTTP\Controllers\AdminController@getIndex');
Admin::menu(\App\User::class)->icon('fa-user');
Admin::menu()->label('Subitems')->icon('fa-book')->items(function ()
{
Admin::menu(\Acme\Models\Bar\User::class)->icon('fa-user');
Admin::menu(\Acme\Models\Foo::class)->label('my label');
});
這裡的另一個缺點是包的檔案看起來已經過時了一些,所以不適用於 Artisan 命令admin:install 。你需要使用 sleepingowl:install,並且可以在這裡和那裡找到更多這種不一致的例子。
所以你可以考慮適用這八個包生成管理皮膚,還有五個包需要提及但不包括它們完整的介紹。
我已經測試了兩個未能提供的軟體包:
-
- 通過一些手動修復可以工作,但文件很難理解(可能使用谷歌翻譯,作者是來自印度尼西亞),也不喜歡作者的一些預設,如使用欄位名稱是 id_xxxx,而不是 xxxx_id。
-
Zofe / Rapyd-Laravel 很不幸的是,它在 Laravel 5.3 上沒有正常工作,所以在撰寫本文時可能沒有計劃進行更新。根據自述,最新的支援版本是 5.2。
最後,還有三個選項可供選擇。我不能提供很多關於他們的資訊,所以我把它們留給你看看:
- Laravel CRUD - CMS - Sximo 5 LTS($ 24)
- Josh - Laravel管理模板+前端+ CRUD($ 25)
- 管理架構師 - Laravel管理框架($ 29)
而且,我們完成了。這些都是我發現用來構建 Laravel 管理皮膚(幾乎)而不需要真正編寫程式碼的可行選項。
本作品採用《CC 協議》,轉載必須註明作者和本文連結