13 個快速構建 Laravel 後臺的擴展包

Laravel 後臺生成器擴展包

開發者們都是懶惰的,不,我不是在開玩笑,他們努力建立系統,幫助他們在將來避免更多的、尤爲是重複性的工做。如今有一些至關優秀的例子,咱們不須要在編寫重複的代碼,它將直接爲咱們生成。今天咱們將會看到 Laravel 框架中的各式各樣的後臺管理面板、後端開發者建立的例子,它們能夠節省咱們多少時間呢?php

Disclaimer: 我是 quickadminpanel 的創始人,一位創造者。回顧這個市場,這裏確實有偉大的競爭對手,我儘量作人要誠實和公正,他們應該獲得友善的話語和尊重。前端

有兩大類後臺管理面板生成器:可視化構建器和基於命令行的。選擇取決於您的偏好,是否喜歡使用 GUI 視圖面板的,仍是有參數的 Artisan 命令行的。laravel

另外,這裏一個重要的術語,知道 CRUD 這個縮寫表明「建立、讀取、更新、刪除」這些操做基於全部的管理面板。一個 CRUD 一般表明一個菜單項的模型來管理數據。git

重要通知:此文章寫於 寫於 2017 年 4 月 1號,下面全部的擴展包都是在 laravel 5.3 中測試的。在撰寫本文的時候,要求他們提供官方的 5.4 版本支持還爲時尚早。(半年時間,Laravel 5.5 都已經發布了)github

可視化的後臺管理面板

Voyager: The Missing Laravel Admin

Voyager

這個產品雖然很新,但給我留下了深入的印象。它已經有一個大的粉絲團,在以前的 laravel 資訊中有提到過它,和它的 YouTube 開發視頻系列。數據庫

Voyager 擁有一個專業而且完美的界面,但主要的一點是,它只是工做。清晰的使用說明,友好的前端主題,沒有明顯的 bug 或未完成的部分。 Voyager 還擁有像船長的圖片或船輪圖標,使它看起來不錯的總體。bootstrap

另外一個明智的決定是有一個參數「虛擬數據」在安裝過程當中,你能夠有你的管理面板預填充數據使用。後端

Voyager 還用有一個媒體文件管理器,來處理你上傳的文件,這很是的方便,並幫助它在其餘的後臺管理建立者中脫穎而出。瀏覽器

最後,在 Voyager 的幫助下,你也能夠經過一個在你的後端應用程序中的 mini-phpMyAdmin 改變數據庫表,從而直接改變你的後臺管理面板。bash

總之,Voyager 彷佛是市場上最優雅的解決方案,但若是不支持或更新一段時間,這種狀況很容易發生變化,這種狀況常常發生在開源的擴展包中。

LaraAdmin: Admin Panel + CRM

LaraAdmin

這是另外一個讓我印象深入的項目。安裝並登陸到你的管理面板後,你能夠直觀地建立 CURDs 模塊。據做者來說,這個模塊化的系統,是受到了 SugarCRM 的啓發。

僅僅經過幾回點擊,你能夠生成你的數據庫模型的遷移文件。若是你喜歡,你也能夠同時或者分開生成 CURD 模塊。

LaraAdmin 帶有至關多的預約義模塊,他們幫助你瞭解這個系統,可是,另外一方面,若是我要建立個人項目從零開始,這須要花些一些時間來對 LaraAdmin 進行默認配置。

和 Voyager 同樣,LaraAdmin 也擁有上傳文件功能。能夠說,她是你上傳文件的內部瀏覽器。

對於前端視圖,LaraAdmin 採用了一種很是受歡迎的主題 adminLTE。它其實是大多數管理面板構建者使用的,它成爲一種市場標準。

QuickAdmin: 在線生成器的擴展包

QuickAdmin

這個包是很是簡單的,安裝以後,您能夠建立 CRUD 模塊或非 CRUD 的菜單項,指定字段、角色和權限。它多是本文中全部擴展包中描述最少的工具。

對於 QuickAdmin 有一個重要的里程碑,它是一個在線版本的管理面板的工具而不是做爲一個現有項目 laravel 包,該生成器能夠爲你下載和使用整個 Laravel 項目。所以,您沒有任何包依賴關係,也不須要學習這個特定包的語法。

非可視化的後臺管理面板

Z-song / Laravel-admin

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

InfyOm Laravel Generator

它有至關使人印象深入的生成器口號:「讓你的 API 和管理面板在幾分鐘內準備好」,因此他們首先強調 API,而不是管理面板。爲此,他們有一個單獨的 API 生成器,它能夠做爲管理面板的一部分,或者做爲獨立的一部分工做。不只如此,他們還將爲 API 生成詳細的註釋。

雖然 infyom 生成器不是可視化(infyom 聲稱他們在工做在 GUI 頁面之上的),它提供了三種不一樣的選項指定的增刪改查參數:控制檯、JSON 文件、或一個現有的數據庫表。是的,你能夠爲一個已經存在的表生成增刪改查模塊,是否是很酷?

這個生成器的一個有趣功能,它使用存儲模式生成代碼,因此您的控制器看起來以下所示:

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);
    }
}
複製代碼

這多是一件很是好的事情,或許你不想使用這種存儲庫模式,以爲它太複雜了。可是採用這種模式有一個最大好處,infyom 能夠爲你生成測試案例代碼!

對於前端視圖,infyom 提供四種模板可供選擇:AdminLTE、 Metronic、Bootstrap、以及 FlatLab.

使用 infyom 最大的問題(與大多數非視覺生成器),是你必須嚴格遵照他們的規則語法。清楚他們的文檔:「仔細閱讀文檔指定的特定輸入,可是若是你使用了錯誤的參數,這個生成器會像魔術同樣工做。

AppzCoder: 增刪改查生成器 + 後臺管理面板

AppzCoder

這個包有兩個產品,一個獨立的增刪改查生成器,和一個 laravel 後臺管理包。它的官方文檔說的要求 laravel 5.1 和 5.3 版本之間工做。

安裝後,你能夠經過一個一個的 Artisan 命令獲得一個 bootstrap 默認主題,也能夠手動建立增刪改查模塊。

他們官方文件中的一個例子:

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']"

生成增刪改查後,而後你指定的全部細節,本身在代碼裏把菜單項,什麼中間件、角色使用等等。因此,這個生成器會爲你的管理面板作不少部分工做。

Backpack for Laravel

這其實是一個龐大的項目,它不只僅是構建於一個管理面板之上的,它還有一個方便的單獨包結構:基礎,增刪改查 日誌管理器,後臺管理器等。做者稱這個擴展包適用於創業者的各類演示網站,以及複雜的 Web 應用程序。

提示:Backpack 使用案例已經在以前的 laravel資訊文章中有提到。

除了增刪改查生成器,它已經預先構建的增刪改查模塊包含:權限管理、設置、頁面管理、新聞管理、菜單管理。另外,Backpack 中的一些包能夠做爲擴展:日誌、備份和其餘一些功能能夠很容易地添加到應用程序中。

Backpack 的問題是它的嚴格,其嚴格要描述這樣,全部在您的控制器代碼的增刪改查功能,它可能看起來像這樣:

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 擴展包是這裏擴展包最嚴格的一個。

值得一提的是 Backpack 擴展包難免費用於商業用途,做者用一種人類友好的方式說:「你使用這個擴展包就是應該去掙錢的,而不是免費的去工做」(這個擴展包收費19美圓)。

SleepingOwl Admin

SleepingOwl

這多是這篇文章中最古老的包之一,但這個包仍然積極在維護,它是由一家俄羅斯公司建立的,您能夠在文檔的某些部分看到俄羅斯語言,在這裏和那裏提交消息和其餘文本。但這並不妨礙實際使用 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');
});
複製代碼

這裏的另外一個缺點是包的文件彷佛過期了一點,而不是 相似於 admin:install 這樣的 sleepingowl:install Artisan 命令行安裝。在這個擴展包中,還能夠找到更多關於這種不一致的例子。


你能夠考慮用這八個擴展包,來生成你的後臺管理面板。除了這些,還有五個沒有全面的審查的擴展包。

我測試了兩個未能交付的包:

  • CrudBooster 它由一些手動修復工做,但文件是難以理解(多是用谷歌翻譯,做者是來自印度尼西亞),我也不喜歡做者的一些建議,如使用字段名稱 xxxx_idid_xxxx 之類的 。
  • Zofe / Rapyd-Laravel 不幸的是,它沒有在 Laravel 5.3 中工做,寫這篇文章的時候他們正在更新,根據他們的自述,最新支持的版本是5.2。

最後,還有三個優質的包選擇於 CodeCanyon。我不能提供不少關於他們的信息,因此我留下來給大家檢查(我想做者是不肯意再花錢了(@^_^@),下面都是收費的擴展包,並且是美圓!):

接下來就寫完了,這些都是可行的選擇,我發現建立你的 laravel 管理面板(幾乎)不用寫代碼。

這是一篇譯文,原文地址是 https://laravel-news.com/13-laravel-admin-panel-generators. 英語好的小夥伴,能夠直接去看原文。

文章中提到的擴展包我基本都有用過,尤爲是 Z-song 開發的 Laravel-admin,在接下來更新的文章中,我會再詳細去寫這些擴展包的優勢和缺點。

個人英文水平有限,翻譯的內容會稍有誤差,但願小夥伴們多多包涵。

相關文章
相關標籤/搜索