承接 sunshinev/laravel-gii 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sunshinev/laravel-gii

Composer 安装命令:

composer require sunshinev/laravel-gii

包简介

visual code generator tools gii for laravel

README 文档

README

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/sunshinev/ViewUI 项目,Fork后做了细微调整

相关资料

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

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

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

sunshinev/laravel-gii 适用场景与选型建议

sunshinev/laravel-gii 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 527 次下载、GitHub Stars 达 110, 最近一次更新时间为 2019 年 11 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「code generator」 「crud」 「gui」 「laravel」 「gii」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 sunshinev/laravel-gii 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 sunshinev/laravel-gii 我们能提供哪些服务?
定制开发 / 二次开发

基于 sunshinev/laravel-gii 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 527
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 111
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 110
  • Watchers: 5
  • Forks: 23
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-11-25