Laravel-Gii 可视化 CRUD 代码生成工具,程序员的福音啊~ - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
sunshinev
V2EX    程序员

Laravel-Gii 可视化 CRUD 代码生成工具,程序员的福音啊~

  •  
  •   sunshinev
    sunshinev 2020-05-07 10:20:34 +08:00 3050 次点击
    这是一个创建于 2049 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Laravel-Gii 可视化代码生成工具 CRUD +GUI

    Packagist Version Travis (.com) GitHub last commit GitHub GitHub repo size GitHub stars GitHub forks

    Laravel Gii 为中小型项目快速创建管理后台,提供了一种新的可能。使用的过程中,你会发现很轻量,自由度很高,内部实现逻辑简单。

    特别是熟悉 iView 的开发者,在通过 Gii 生成的页面上,可以根据自己的需求自定义页面,通过修改默认 Input 组件为其他功能丰富的 iView 组件,可以来构造更加复杂的管理页面。

    你会发现它没有提供用户登录、权限功能,转而只是提供更加轻量化的页面创建,这点会让很多开发者们感到更加舒适,可以自由灵活的调整、自定义页面,来实现不同的能力。

    感谢支持,欢迎在 Issue 提出意见

    开始体验吧

    e1daf65668566cd8f7dd417211820a091576311651.jpg

    [TOC]

    原理

    1. 通过解析 MySQL 的数据表结构,来提取字段、以及类型,并填充到stub模板。
    2. 生成对应的 Model 、Observer 、Controller 、View 、Route 等相关项目文件。
    3. 根据 MySQL 表结构生成 Model
    4. 根据 Model 生成 Controller

    官网

    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 

    操作说明

    生成 Model 模型

    表单说明

    1. 表名称(支持下拉选择)
    2. Model 类名(想要创建模型类,包含命名空间)
    3. 模型继承的父类(如果是 Mongo 可以继承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 

    通过上面的结构,我们可以发现命名空间与目录之间的关系。

    image

    生成 CRUD

    CRUD 的创建,需要依赖之前创建的模型。

    该操作会同时生成:

    • route
    • controller
    • views

    表单说明

    1. 控制器名称(包含命名空间)
    2. 之前创建的模型类

    如果指定 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,通过模块化的概念,来划分功能。

    85bce766f1a574d97ac931c8b98c29591576222771.jpg

    如何访问 CRUD?

    CRUD 的路由会自动添加到路由文件中,根据 Controller 的命名空间App\Http\Controllers\Admin\UsersController会生成如下的路由,所以请直接访问路由

    Route::get('/admin/layout', 'Admin\RenderController@index'); Route::get('/admin/layout/render', 'Admin\RenderController@render'); 

    特性

    MySQL 列表加载

    从配置的 MySQL 数据库中拉取列表 135efc4b0abc7a7baf67793fb8de30901576222494.jpg

    文件对比

    工具会将新生成的文件与已存在的文件进行差异对比,方便查看修改部分,控制修改范围。

    image

    路由追加

    新生成的页面,会自动追加到路由配置文件 b58eb0bd955bafea27540d6227e611731576209355.jpg

    CRUD 后台效果

    列表页

    包含全面的增删查改功能

    • 列表
    • 分页
    • 检索
    • 删除+批量删除
    • 预览
    • 详情
    • 编辑

    a7124e651545e7f462e898ffb37704a41576223115.jpg

    删除+批量删除

    取消按钮放大,防止误删

    fa926f38e95888fd4a3c3aa055d202f41576223165.jpg

    行预览

    0b2b1603c043aec9b5cee84a17e26f291576223207.jpg

    编辑页面

    bc43b30f13de17e0a2a899a59f647d3a1576223248.jpg

    建议

    如果想用 Mongo 怎么办?

    如果生成完 Model 之后,默认的会使用 env 中配置的 connection,如果需要调整,需要修改生成的 Model 文件。

     // if connection is empty ,use default connection protected $cOnnection= ''; 

    后台页面如何支持其他组件?

    后台页面统一使用 iview 作为前端框架,目前支持 iview4 的所有组件,可直接在生成的 blade 模板文件中添加组件即可。

    iviewui 文档

    如何升级页面的 iview 组件?

    生成的 CRUD 后台使用的是基于laravel-fe-renderbase-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目录,然后重新发布即可.

    关于 Gii 的 iview.min.js

    请参考 https://github.com/sunshine/ViewUI 项目,Fork 后做了细微调整

    相关资料

    https://github.com/sunshinev/laravel-fe-render

    https://github.com/sunshinev/base-fe

    https://github.com/sunshinev/laravel-gii

    6 条回复    2020-05-07 20:46:42 +08:00
    guyeu
        1
    guyeu  
       2020-05-07 13:52:52 +08:00
    不是很懂这种东西的价值。。哪有那么多 CRUD 业务啊。。
    sunshinev
        2
    sunshinev  
    OP
       2020-05-07 14:12:46 +08:00
    @guyeu 实际上 PHP 做后台的场景很多的~ 而且最重要的是他生成的是单独页面,可以针对每个页面进行丰富的组件替换开发的,比如搞个进度条、搞个富文本,搞个图形啥的~很 6 的,关键是 laravel 的包,安装快捷方便~
    xingyuc
        3
    xingyuc  
       2020-05-07 16:16:19 +08:00
    CodeSmith 好像是生成通用代码的
    hackzx
        4
    hackzx  
       2020-05-07 18:34:59 +08:00
    在 laravel7 运行不正常,生成 CRUD 的页面显示 not found 。生成 model 的也生成不了
    zachlhb
        5
    zachlhb  
       2020-05-07 20:36:17 +08:00 via Android
    纯 curd 用 laravel-admin 就行了,方便快捷
    sunorg
        6
    sunorg  
       2020-05-07 20:46:42 +08:00 via Android
    来自 GII ? yii 时代就有了。的确不错
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4537 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 01:07 PVG 09:07 LAX 17:07 JFK 20:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86