本文翻译整理自 13 Laravel Admin Panel Generators
开发者很懒。对,我不是在开玩笑。他们努力创造能够帮助他们在将来避免更多工作的系统。特别是重复的工作。现在有相当极端的例子。例如我们不需要再编写代码,它正在为我们生成。今天我们将看看 Laravel 框架的各种管理面板和后端项目构建器的示例。他们能解放我们多少时间?
免责声明:我是这些构建器之一的创始人: QuickAdminPanel,但是对于这篇文章,我尽可能保持诚实和公正。他们都是非常伟大的竞争对手,他们值得我尊敬他们。(PS: 无力吐槽,怎么搞的跟决斗一样)有两大组管理面板生成器:可视化构建器 和 基于控制台。无论您是喜欢使用 GUI 还是使用参数输入 Artisan 命令,选择都取决于您的喜好。
此外,这里需要了解的一个重要术语是 CRUD,这个缩写代表 Create,Read,Update,Delete。这些操作是所有管理面板的基础。一个 CRUD 通常代表一个模型和一个菜单项来管理这些数据。
重要通知:以下所有工具都使用Laravel 5.3进行测试。在撰写本文时,要求官方提供 5.4 版本的支持还为时尚早。
[
](https://i2.wp.com/wp.laravel-news.com/wp-content/uploads/2017/02/image04.png?resize=525%2C352)
这款产品虽然相当新,却给我留下了最深的印象。它已经有了很多的粉丝,之前已经在 Laravel News 上提到过,并且拥有自己的 Youtube 教学视频。
Voyager 以优雅和专业的界面脱颖而出,但主要的一点是,它只是工作。清楚的使用说明,友好的前端主题,没有明显的错误或未完成的部分,这就是 Voyager。使用像船长的照片或轮船的图标,使整体看起来不错。
另一个明智的决定是在安装过程中有一个参数 “dummy-data” - 你可以让你的管理面板预先填写条目来玩。
Voyager 还有一个文件管理系统来管理所有你上传的文件,这真的很方便,并有助于在其他管理面板建设者中脱颖而出。
最后,在 Voyager 的帮助下,您还可以直接从管理面板更改数据库表格,这是您的后端应用程序中的一种迷你 phpMyAdmin。
总而言之,Voyager 似乎是市场上最精致的解决方案,但是如果不维护或更新一段时间,这种情况很容易发生变化,这种情况在开源软件包中经常发生。
[
](https://i1.wp.com/wp.laravel-news.com/wp-content/uploads/2017/02/LaraAdmin.jpg?resize=525%2C288)
这是另一个让我印象深刻的项目。安装并登录到管理面板后,您可以直观地创建代表您的 CRUD 的模块。根据作者的说法,模块化系统受到 SugarCRM的 的启发。
只需点击几下鼠标,您就可以为您的模型生成数据库迁移,同时还可以单独或根据需要生成 CRUD。
LaraAdmin 附带了相当多的预定义模块。他们可以帮助您了解系统,但另一方面,如果我必须从头开始创建项目,则需要一些时间才能改变 LaraAdmin 的默认设置。
和上面的 Voyager 一样,LaraAdmin 有上传模块。基本上,这是一个用于上传的内部浏览器。
对于前端视图,LaraAdmin 使用非常流行的主题 AdminLTE。(它实际上已经被大多数管理面板使用,变成了一种市场标准)。
[
](https://i0.wp.com/wp.laravel-news.com/wp-content/uploads/2017/02/QuickAdmin.png?resize=525%2C211)
这个包非常简单 - 安装完成后,可以创建 CRUD 或非 CRUD 的菜单项,并指定 字段 和 角色/权限。这个 Readme 中的所有工具中都有可能最短的自述文件。
QuickAdmin 的一个重要里程碑是 管理面板生成器的在线版本,而 不是作为您现有项目的Laravel软件包,该生成器构建了整个 Laravel 项目供您下载和使用。所以你没有任何包依赖,也不需要学习这个特定包的任何语法。
[
](https://i0.wp.com/wp.laravel-news.com/wp-content/uploads/2017/02/z-song.jpg?resize=525%2C244)
这个包几乎在两个类别之间 - 生成器的一部分实际上是可视化的,所以你可以在你的管理面板中创建新的菜单项,但是对于大部分的过程,你将不得不手动编写代码,如:
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
包真的效果很好。
它还提供了其他功能,如模型网格,模型表单,模型树,甚至是预制的小部件。
[
](https://i1.wp.com/wp.laravel-news.com/wp-content/uploads/2017/02/infyom.png?resize=525%2C392)
它有一个令人印象深刻的口号:“在几分钟内准备好您的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 最大的问题(就像大多数非可视化的生成器一样),你必须严格遵守它们的语法规则。他们在文档中明确指出:_“仔细阅读文档,并以指定字段输入。”_ 但是如果在参数中输入错误错误的字段,没那么这个生成器将像魔术一样工作。(对,你没看错,就是魔术! ?)
[
](https://i0.wp.com/wp.laravel-news.com/wp-content/uploads/2017/02/appzcoder.png?resize=525%2C186)
这个包是两个产品合并在了一起,有独立的 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 之后,您可以在代码中自己指定所有的细节 - 在哪里放置菜单项,要使用什么中间件/角色等等。所以,这个生成器将只为您的管理面板做一部分工作。
这其实是一个庞大的项目。它不仅仅是一个管理面板生成器,而且它具有独立包的便利结构: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)。
[
](https://i0.wp.com/wp.laravel-news.com/wp-content/uploads/2017/02/sleepingowl.png?resize=525%2C159)
这可能是这个列表中最古老的软件包之一,但仍然在积极维护 - 这个软件包是由俄罗斯公司创建的,你可以在文档的某些部分看到俄语,提交消息和其他文本。但它并没有妨碍实际使用 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_,并且可以在这里和那里找到更多这种不一致的例子。
所以你可以考虑适用这八个包生成管理面板,还有五个包需要提及但不包括它们完整的介绍。
我已经测试了两个未能提供的软件包:
最后,还有三个选项可供选择。我不能提供很多关于他们的信息,所以我把它们留给你看看:
而且,我们完成了。这些都是我发现用来构建 Laravel 管理面板(几乎)而不需要真正编写代码的可行选项。
Original url: Access
Created at: 2018-10-10 17:10:13
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论