Laravel Gii 为中小型项目快速创建管理后台,提供了一种新的可能。使用的过程中,你会发现很轻量,自由度很高,内部实现逻辑简单。
特别是熟悉 iView 的开发者,在通过 Gii 生成的页面上,可以根据自己的需求自定义页面,通过修改默认 Input 组件为其他功能丰富的 iView 组件,可以来构造更加复杂的管理页面。
你会发现它没有提供用户登录、权限功能,转而只是提供更加轻量化的页面创建,这点会让很多开发者们感到更加舒适,可以自由灵活的调整、自定义页面,来实现不同的能力。
感谢支持,欢迎在 Issue 提出意见
开始体验吧
[TOC]
stub
模板。https://sunshinev.github.io/laravel-gii-home
因为是解析 MySQL 的表结构,并且根据字段生成模板,所以目前生成的 Model 类时只支持 MySQL,但是生成的 CRUD 管理后台,可以使用支持 mongo 和 MySQL 两种 connection 。
MySQL 表结构请保证id
,created_at
,updated_at
三个字段必须存在。
Composer require sunshinev/laravel-gii -vvv
该操作会发布 assets 静态文件,到 public 目录下
php artisan vendor:publish --tag laravel-gii
在发布完成后,已经进行了路由的注册,可以通过下面的路由访问 Gii 页面
http:[domain]/gii/model
表单说明
Jenssegers\Mongodb\Eloquent\Model
,MySQL 用Illuminate\Database\Eloquent\Model
)生成的文件列表,蓝色代表全新文件,红色代表已有文件但是存在不同,白色代表已有文件。
比如指定生成的 Model 命名空间为App\Models\Admin\Users
,那么生成的目录结构为:
.app
├── Models
│ └── Admin
│ ├── UsersModel.php
│ └── Users.php
└── Observers
└── Models
└── Admin
└── UsersObserver.php
通过上面的结构,我们可以发现命名空间与目录之间的关系。
CRUD 的创建,需要依赖之前创建的模型。
该操作会同时生成:
表单说明
如果指定 Controller 的类为App\Http\Controllers\Admin\UsersController
,以及关联的 Model 为App\Models\Admin\Users
,那么生成的目录结构为:
app
├── Http
│ └── Controllers
│ └── Admin
│ ├── RenderController.php
│ └── UsersController.php
├── Models
│ └── Admin
│ ├── UsersModel.php
│ └── Users.php
└── Observers
└── Models
└── Admin
└── UsersObserver.php
以及生成的视图文件
.resources
└── views
└── admin
├── layouts
│ └── default.blade.php
└── users
├── create.blade.php
├── detail.blade.php
├── edit.blade.php
└── list.blade.php
通过上面的结构,我们可以发现命名空间与目录之间的关系。会发现admin
实际想当于modules
,通过模块化的概念,来划分功能。
CRUD 的路由会自动添加到路由文件中,根据 Controller 的命名空间App\Http\Controllers\Admin\UsersController
会生成如下的路由,所以请直接访问路由
Route::get('/admin/layout', 'Admin\RenderController@index');
Route::get('/admin/layout/render', 'Admin\RenderController@render');
从配置的 MySQL 数据库中拉取列表
工具会将新生成的文件与已存在的文件进行差异对比,方便查看修改部分,控制修改范围。
新生成的页面,会自动追加到路由配置文件
包含全面的增删查改功能
取消按钮放大,防止误删
如果生成完 Model 之后,默认的会使用 env 中配置的 connection,如果需要调整,需要修改生成的 Model 文件。
// if connection is empty ,use default connection
protected $connection = '';
后台页面统一使用 iview 作为前端框架,目前支持 iview4 的所有组件,可直接在生成的 blade 模板文件中添加组件即可。
生成的 CRUD 后台使用的是基于laravel-fe-render和base-fe 两个项目,其中base-fe
是 Vue+iview 的打包,如下:
import Vue from 'vue'
import ViewUI from 'view-design';
import 'view-design/dist/styles/iview.css';
Vue.use(ViewUI);
可以 Fork base-fe
项目,然后进行 iview 升级,将生成的 dist 目录放到laravel-fe-render
项目的assets
目录,然后重新发布即可.
请参考 https://github.com/sunshinev/ViewUI 项目,Fork 后做了细微调整
https://github.com/sunshinev/laravel-fe-render
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.