Scaffold for laravel基于 Laravel 的后臺腳手架
zgldh/Scaffold
基于 Laravel 5.5, Vue 2, ElementUI 2, vueAdmin-template 制作的后臺腳手架。
預制功能:
用戶,角色,權限體系
文件上傳
通知系統(tǒng)
完全脫離 Cookie/Session 機制。全面擁抱 JWT。自動刷新 Token
強化的前端數(shù)據(jù)表格,使用 datatables 協(xié)議。
多語言
開始使用
composer create-project zgldh/scaffold your-project-dir配置好
.env數(shù)據(jù)庫相關-
php artisan scaffold:init會自動執(zhí)行以下命令
migratestorage:linkdb:seed --class=ScaffoldInitialSeederscaffold:update-permissionslang:dump
配置好 frontend/config/dev.env.js 的 BASE_API
npm install
npm run start
生成器
| 名稱 | 命令 |
|---|---|
| 模塊初始化 | scaffold:module {moduleName} {--force} |
| 模型初始化 | scaffold:model {modelStarterClass} {--only=*} {--force} |
| API 生成 | scaffold:api {method} {route} {moduleName} {--controller=} {--action=} |
| 權限生成 | scaffold:update-permissions {type=api : set guard name} |
| 語言文件導出 | lang:dump |
模塊初始化
scaffold:module {moduleName} {--force}
模塊是指一個獨立的功能領域。使用本命令將初始化一個模塊。
Example
scaffold:module Post
將創(chuàng)建好如下目錄和文件:
Modules/PostModules/Post/routes.phpModules/Post/PostServiceProvider.phpfrontend/src/store/modules/post.js
并自動修改好如下文件:
config/api.phproutes/api.phpfrontend/src/store/index.js
模型初始化
scaffold:model {modelStarterClass} {--only=*} {--force}
模型是指數(shù)據(jù)模型,對應著一個數(shù)據(jù)表。需要一個 Starter Class 來描述該模型。
使用本命令將初始化該模型的migration file, controller, model, request, repository, route, factory, PHP 單元測試和前端腳手架文件。基本的 CRUD 都準備好了。
如何編寫 Starter Class 請參考源碼: Modules\Post\PostStarter.php
--only 取值: controller, request, repository, model, migration, api, resource, language, route, factory, phpunit 將只生成對應文件。
Example
scaffold:model Modules/Post/PostStarter.php
將創(chuàng)建好如下目錄和文件:
Modules/PostModules/Post/Controllers/PostController.phpModules/Post/Repositories/PostRepository.phpModules/Post/Models/Post.phpModules/Post/Requests/CreatePostRequest.phpModules/Post/Requests/UpdatePostRequest.phpresources/lang/en/post.phpresources/lang/zh-CN/post.phpdatabase/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.phpdatabase/factories/PostFactory.phptests/Modules/Posttests/Modules/Post/Post/PostIndexTest.phptests/Modules/Post/Post/PostStoreTest.phptests/Modules/Post/Post/PostShowTest.phptests/Modules/Post/Post/PostUpdateTest.phptests/Modules/Post/Post/PostDestroyTest.phpfrontend/src/api/post.jsfrontend/src/views/postfrontend/src/views/post/Post/List.vuefrontend/src/views/post/Post/Editor.vue
并自動修改好如下文件:
Modules/Post/routes.phpfrontend/src/router/dynamicRouterMap.js
API 生成
scaffold:api {method} {route} {moduleName} {--controller=} {--action=}
方便的生成一個單獨的 API 和周邊的各種類、單元測試、前臺接口等。
Example
scaffold:api put /post/{id}/like Post
將創(chuàng)建好如下目錄和文件:
Modules/Post/Requests/PutIdLikeRequest.phpModules/Post/routes.phptests/Modules/Post/Post/PutIdLikeTest.php
并自動修改好如下文件:
Modules/Post/Controllers/PostController.phpModules/Post/routes.phpfrontend/src/api/post.js
并創(chuàng)建權限:
Post@putIdLike
權限生成
scaffold:update-permissions {type=api : set guard name}
遍歷 Modules 下所有的 controller 和 repository。 根據(jù)其公共函數(shù)生成一系列權限,并自動賦予超級管理員。
如果函數(shù)的注釋內(nèi),包含有 @no-permission 標記,則跳過該函數(shù)。
Example
scaffold:update-permissions
將自動修改對應 model 的語言文件的 permissions 數(shù)組,并創(chuàng)建一系列權限。
會自動跳過重復權限。
語言文件導出
lang:dump
將 PHP 語言文件導出為前端語言文件。使得前端 vue-i18n 組件也可使用。
導出產(chǎn)物儲存在 frontend/src/lang/languages.js
組件說明
TODO
預制功能說明
TODO
