【擴展推薦】 Laravel-Gii 如何根據MySQL表結構建立CRUD後臺

最終效果

image.png

Laravel Gii 爲中小型項目快速建立管理後臺,提供了一種新的可能。使用的過程當中,你會發現很輕量,自由度很高,內部實現邏輯簡單。

特別是熟悉iView的開發者,在經過Gii生成的頁面上,能夠根據本身的需求自定義頁面,經過修改默認Input組件爲其餘功能豐富的iView組件,能夠來構造更加複雜的管理頁面。php

你會發現它沒有提供用戶登陸、權限功能,轉而只是提供更加輕量化的頁面建立,這點會讓不少開發者們感到更加溫馨,能夠自由靈活的調整、自定義頁面,來實現不一樣的能力。css

感謝支持,歡迎在Issue提出意見html

開始體驗吧前端

e1daf65668566cd8f7dd417211820a091576311651.jpg

[TOC]vue

原理

  1. 經過解析MySQL的數據表結構,來提取字段、以及類型,並填充到stub模板。
  2. 生成對應的Model、Observer、Controller、View、Route等相關項目文件。
  3. 根據MySQL表結構生成Model
  4. 根據Model生成Controller

官網

https://sunshinev.github.io/l...laravel

注意

由於是解析MySQL的表結構,而且根據字段生成模板,因此目前生成的Model類時只支持MySQL,可是生成的CRUD管理後臺,可使用支持mongo和MySQL兩種connection。git

MySQL表結構請保證id,created_at,updated_at三個字段必須存在。github

安裝

擴展包

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/... 項目,Fork後作了細微調整

相關資料

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

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

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

相關文章
相關標籤/搜索