13 个 Laravel 管理面板生成器
发布日期:作者: PovilasKorop
开发人员很懒。不,我没有开玩笑 - 他们努力创建帮助他们避免未来更多工作的系统。尤其是重复性的工作。现在有相当极端的例子 - 我们不再需要编写代码了;它正在为我们生成。今天,我们将看看适用于 Laravel 框架的各种管理面板和后端项目构建器的示例。它们实际上可以为我们节省多少时间?
免责声明:我是其中一个构建器的创始人,QuickAdminPanel,但我尽力在这个市场评论中尽可能诚实和公正。确实有一些很棒的竞争对手,他们值得赞扬。
管理面板生成器有两大类:可视化构建器和基于控制台的构建器。选择取决于您的偏好,您是喜欢使用 GUI 还是使用带有参数的 Artisan 命令进行键入。
另外,这里需要了解的一个重要术语是CRUD——这个缩写代表“创建、读取、更新、删除”——这些操作是所有管理面板的基础。一个 CRUD 通常代表一个模型和一个管理该数据的菜单项。
重要提示:以下所有工具均在 Laravel 5.3 上进行了测试。在撰写本文时,要求他们正式支持 5.4 版本还为时过早。
可视化管理面板构建器
Voyager:缺少的 Laravel 管理
尽管这款产品相当新,但给我留下了最深刻的印象。它已经拥有庞大的粉丝群体,之前在 Laravel 新闻中也曾被提及过,并且在 DevDojo 的 Youtube 系列节目中也有专门介绍。
Voyager 拥有精致而专业的界面,但重点是它可以正常工作。清晰的使用说明、友好的前端主题、没有明显的错误或未完成的部分——这就是 Voyager。即使是像船长照片或船轮这样的图标,也使它整体看起来很不错。
另一个明智的决定是在安装过程中使用参数“dummy-data”——您可以拥有一个填充了预先填写条目的管理面板,以便您进行尝试。
Voyager 还拥有一个媒体管理器,可以处理您上传的所有文件,这非常方便,并且帮助它在其他管理面板构建器中脱颖而出。
最后,借助 Voyager,您还可以直接从管理面板更改数据库表——这相当于在您的后端应用程序中使用一个小型 phpMyAdmin。
总的来说,Voyager 看起来是市场上最完善的解决方案,但如果它长时间没有得到支持或更新,情况很容易发生变化,这在开源软件包中很常见。
LaraAdmin:管理面板 + CRM
这是另一个让我印象深刻的项目。安装并登录您的管理面板后,您可以以可视化的方式创建模块,这些模块代表您的 CRUD。作者表示,模块化系统借鉴了 SugarCRM 的理念。
只需点击几下,您就可以为您的模型生成数据库迁移,并同时生成 CRUD,或者如果您愿意,也可以单独生成。
LaraAdmin 附带了一些预定义的模块。它们可以帮助您了解系统,但另一方面,如果我必须从头开始创建我的项目,我需要花一些时间才能摆脱这些 LaraAdmin 默认设置。
与上面的 Voyager 一样,LaraAdmin 也拥有上传功能。基本上,它是一个用于浏览上传文件的内部浏览器。
对于前端视图,LaraAdmin 使用了非常流行的主题AdminLTE。实际上,大多数管理面板构建器都使用它;它已经成为某种市场标准。
QuickAdmin:软件包和在线生成器
这个软件包非常简单——安装后,您可以创建 CRUD 或非 CRUD 菜单项,并指定字段和角色/权限。它可能是本评论中所有工具中最短的自述文件。
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 生成器
功能非常强大的生成器,其口号是“在几分钟内准备好您的 API 和管理面板”,因此它们首先强调 API,而不是管理面板。为此,他们拥有一个独立的 API 生成器,该生成器可以作为管理面板的一部分,也可以作为独立的工具使用。不仅如此——他们还会为 API 生成 Swagger 注释。
虽然 InfyOm Generator 不是可视化的(他们声称目前正在开发 GUI),但它提供了三种不同的选项来指定 CRUD 参数:控制台、JSON 文件或现有的数据库表。没错,您可以为已存在的表生成 CRUD,这难道不酷吗?
此生成器的一个有趣功能是它使用 存储库模式生成代码,因此您的控制器将如下所示
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:CRUD 生成器 + 管理面板
这个软件包包含两款产品——一个是独立的 CRUD 生成器,另一个是 Laravel 管理软件包。其官方文档中说明要求是 Laravel 5.1,但在测试期间它也适用于 5.3 版本。
安装后,您将获得一个默认的 Laravel bootstrap 主题视图,并可以使用以 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 适合展示网站、创业公司和复杂的 Web 应用。
注意: Backpack 已经在 Laravel News 文章 中被提及,包括使用案例和概述。
除了 CRUD 生成器,它还预先构建了 CRUD,包括权限管理器、设置、页面管理器、新闻管理器和菜单管理器。此外,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 在这里是最严格的一个。
还值得一提的是 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');});
另一个缺点是这个包的文档似乎有点过时——因此,你应该使用 sleepingowl:install 而不是 Artisan 命令 admin:install,并且可以在其他地方找到这种不一致性的更多示例。
因此,这些是需要考虑的用于生成管理面板的八个包,还有五个包需要提及,但不会对其进行完整评审。
我已经测试了另外两个包,但它们未能完成任务
- CrudBooster – 我通过一些手动修复使其工作,但文档很难理解(可能使用了 Google 翻译,作者来自印度尼西亚),我还不喜欢作者的一些建议,比如使用字段名 id_xxxx 而不是 xxxx_id。
- Zofe / Rapyd-Laravel – 不幸的是,它无法在 Laravel 5.3 上运行,因此在撰写本文时可能不会更新。根据其自述文件,最新支持的版本是 5.2。
最后,还有三个选项可供选择——来自 CodeCanyon 的付费包。我无法提供有关它们的很多信息,因此我将它们留给你去查看
- Laravel CRUD – CMS – Sximo 5 LTS ($24)
- Josh – Laravel Admin 模板 + 前端 + CRUD ($25)
- Admin Architect – Laravel 管理框架 ($29)
好了,就这样。这些是我找到的所有可行的选项,让你几乎不用编写代码就可以构建 Laravel 管理面板。