13 个优秀的 Laravel 管理面板生成器
80

本文翻译整理自 13 Laravel Admin Panel Generators

开发者很懒。对,我不是在开玩笑。他们努力创造能够帮助他们在将来避免更多工作的系统。特别是重复的工作。现在有相当极端的例子。例如我们不需要再编写代码,它正在为我们生成。今天我们将看看 Laravel 框架的各种管理面板和后端项目构建器的示例。他们能解放我们多少时间?

免责声明:我是这些构建器之一的创始人: QuickAdminPanel,但是对于这篇文章,我尽可能保持诚实和公正。他们都是非常伟大的竞争对手,他们值得我尊敬他们。(PS: 无力吐槽,怎么搞的跟决斗一样)

有两大组管理面板生成器:可视化构建器基于控制台。无论您是喜欢使用 GUI 还是使用参数输入 Artisan 命令,选择都取决于您的喜好。

此外,这里需要了解的一个重要术语是 CRUD,这个缩写代表 Create,Read,Update,Delete。这些操作是所有管理面板的基础。一个 CRUD 通常代表一个模型和一个菜单项来管理这些数据。

重要通知:以下所有工具都使用Laravel 5.3进行测试。在撰写本文时,要求官方提供 5.4 版本的支持还为时尚早。

可视化管理面板构建器

Voyager: The Missing Laravel Admin

file

这款产品虽然相当新,却给我留下了最深的印象。它已经有了很多的粉丝,之前已经在 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

img

这个包几乎在两个类别之间 - 生成器的一部分实际上是可视化的,所以你可以在你的管理面板中创建新的菜单项,但是对于大部分的过程,你将不得不手动编写代码,如:

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

img

它有一个令人印象深刻的口号:“在几分钟内准备好您的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提供了四种模板可供选择:AdminLTEMetronicBootstrapFlatLab

InfyOm 最大的问题(就像大多数非可视化的生成器一样),你必须严格遵守它们的语法规则。他们在文档中明确指出:“仔细阅读文档,并以指定字段输入。” 但是如果在参数中输入错误错误的字段,没那么这个生成器将像魔术一样工作。(对,你没看错,就是魔术! ?)

AppzCoder:CRUD 生成器+管理面板

img

这个包是两个产品合并在了一起,有独立的 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

img

这可能是这个列表中最古老的软件包之一,但仍然在积极维护 - 这个软件包是由俄罗斯公司创建的,你可以在文档的某些部分看到俄语,提交消息和其他文本。但它并没有妨碍实际使用 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,并且可以在这里和那里找到更多这种不一致的例子。


所以你可以考虑适用这八个包生成管理面板,还有五个包需要提及但不包括它们完整的介绍。

我已经测试了两个未能提供的软件包:

  • CrudBooster

    • 通过一些手动修复可以工作,但文档很难理解(可能使用谷歌翻译,作者是来自印度尼西亚),也不喜欢作者的一些预设,如使用字段名称是 id_xxxx,而不是 xxxx_id。
  • Zofe / Rapyd-Laravel 很不幸的是,它在 Laravel 5.3 上没有正常工作,所以在撰写本文时可能没有计划进行更新。根据自述,最新的支持版本是 5.2。

最后,还有三个选项可供选择。我不能提供很多关于他们的信息,所以我把它们留给你看看:

而且,我们完成了。这些都是我发现用来构建 Laravel 管理面板(几乎)而不需要真正编写代码的可行选项。

本帖由 Summer 于 10个月前 加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2
Cooper
10个月前

@Cooper 这个简介干净。

10个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!