andy87 / yii2-dnk-generator
我的`模板路径`模式工作流程
Requires
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-09-16 02:42:59 UTC
README
在Yii2 advanced
上的个人库,用于生成文件包,并遵循模板路径
、适配器
和其他模式。
导航。
描述
图例
- S_P&M > == 在
property
&methods
中设置 - Env:
all
== 所有环境(common/console/backend/frontend) - Env:
backend
== 环境代码backend
- Env:
frontend
== 环境代码frontend
模型 & 表单。
📄 common/components/core/BaseModel.php // S_P&M > all children models on Env:`all`
|
└─📄 common/models/sources/__Model__Source.php // model generated by `gii`, S_P&M > all children models on Env:all
|
├─📄 common/models/items/__Model__.php // S_P&M > models by part `__model__` on Env:`all`
| |
| ├─📄 backend/models/items/__Model__.php // S_P&M > `model` by part `__model__` on Env:`backend`
| | └─📄 backend/models/forms/__Model__Form.php // S_P&M > `form` on model `backend/models/items/__Model__` on Env:`backend`
| |
| └─📄 frontend/models/items/__Model__.php // S_P&M > `model` by part `__model__` on Env:`frontend`
| └─📄 frontend/models/forms/__Model__Form.php // S_P&M > `form` on model `frontend/models/items/__Model__` on Env:`frontend`
|
└─📄 common/models/search/__Model__Search.php // model for generated by `gii`, S_P&M > all search children models on Env:all
├─📄 backend/models/search/__Model__Search.php // S_P&M > `search model` by part `__model__` on Env:`backend`
└─📄 frontend/models/search/__Model__Search.php // S_P&M > `search model` by part `__model__` on Env:`frontend`
服务。
📄 common/components/core/BaseService.php // S_P&M > all services on Env:`all`
|
├─📄 backend/components/services/__Model__Service.php // S_P&M > services by part `__Model__` on Env:`backend`
|
└─📄 frontend/components/services/__Model__Service.php // S_P&M > services by part `__Model__` on Env:`frontend`
控制器。
📄 common/components/core/BaseController.php // S_P&M > all controllers on Env:`all`
|
├─📄 backend/components/controllers/BackendController.php // S_P&M > all controllers on Env:`backend`
| └─📄 backend/components/controllers/CrudController.php // S_P&M > all controllers generated with `crud` on Env:`backend`
| └─📄 backend/controllers/crud/__Model__Controller.php // S_P&M > generated `crud` controllers for moled `__Model__` on Env:`backend`
|
└─📄 frontend/components/controllers/FrontendController.php // S_P&M > all controllers on Env:`frontend`
└─📄 frontend/controllers/__Model__Controller.php // S_P&M > controllers for moled `__Model__` on Env:`frontend`
资源。
📄 common/components/core/BaseResource.php // S_P&M > all resources on Env:`all`
|
├─📄 backend/components/core/resources/BackendResource.php // S_P&M > all resources on Env:`backend`
| |
| ├─📄 backend/components/resources/CrudListResource.php // S_P&M > all resources for view `index` on Env:`backend`
| | └─📄 backend/resources/__model__/__Model__ListResource.php // S_P&M > resources for moled `__Model__` on view `index` Env:`backend`
| |
| ├─📄 backend/components/resources/CrudReadResource.php // S_P&M > all resources for view `view` on Env:`backend`
| | └─📄 backend/resources/__model__/__Model__ReadResource.php // S_P&M > resources for moled `__Model__` on view `read` Env:`backend`
| |
| └─📄 backend/components/resources/CrudUpdateResource.php // S_P&M > all resources for view `update` on Env:`backend`
| └─📄 backend/resources/__model__/__Model__UpdateResource.php // S_P&M > resources for moled `__Model__` on view `update` Env:`backend`
|
└─📄 frontend/components/core/resources/FrontendResource.php // S_P&M > all resources on Env:`frontend`
|
├─📄 frontend/resources/ReadResource.php // S_P&M > all resources for view `view` on Env:`frontend`
| └─📄 frontend/resources/__model__/__Model__ReadResource.php // S_P&M > resources for moled `__Model__` on view `read` Env:`frontend`
|
└─📄 frontend/resources/ListResource // S_P&M > all resources for view `list` on `frontend` environment
└─📄 frontend/resources/__model__/__Model__ListResource.php // S_P&M > resources for moled `__Model__` on view `list` Env:`frontend`
用法/示例。
命令
php yii dnk/setup `bool`
描述
生成文件
common/components/Entity.php
- 带标签的服务部分common/components/db/Setup.php
- 数据库配置:CHARACTER, COLLATE, ENGINEcommon/components/db/Tables.php
- 使用Part::CONSTANT_NAME的表名类common/components/resources/GridViewResource.php
- GridView资源(搜索,数据提供者)backend/components/controllers/BackendController.php
- 带常用方法的基 backend 控制器frontend/components/controllers/FrontendController.php
- 带常用方法的基 frontend 控制器common/components/resources/crud/CreateResource.php
- 视图创建的通用资源common/components/resources/crud/ListResource.php
- 视图列表(index)的通用资源common/components/resources/crud/ReadResource.php
- 视图阅读(view)的通用资源common/components/resources/crud/UpdateResource.php
- 视图更新(update)的通用资源
命令
php yii dnk/run `string` `bool`
生成基本文件包
描述
-
console/migration
- migration
console/migration/m000000_000000_create_table__user.php
模板
- migration
-
common/models
-
common/services
- common-service
common/services/UserService.php
模板
- common-service
-
backend/models
-
backend/services
- 后端服务
backend/services/UserService.php
模板
- 后端服务
-
后端资源
-
后端控制器
- 模型控制器
backend/controller/cruds/UserController.php
模板
- 模型控制器
-
后端视图
-
前端模型
-
前端服务
- 前端服务
frontend/service/UserService.php
模板
- 前端服务
-
前端资源
-
前端控制器
- 模型控制器
frontend/consrollers/UserController.php
模板
- 模型控制器
-
前端视图
命令
php yii dnk/gii-model `string` `bool`
为选定的表(部分)生成 gii model
* - 从配置 parts
生成列表
示例
php yii dnk/gii-model user
php yii dnk/gii-model *
别名
php yii gii/model
命令
php yii dnk/gii-crud `string` `bool`
为选定的表(部分)生成 gii crud
* - 从配置 parts
生成列表
示例
php yii dnk/gii-crud user
php yii dnk/gii-crud *
别名 php yii gii/crud
命令
php yii dnk/list `string` `string` `bool`
为针式表(部分)生成选定的文件类型(文件类型列表)
描述
一次性生成文件。
php yii dnk/list `string` `string` `bool`
* - 从配置 parts
生成列表
仅生成:common/services/UserService.php
模板
生成所选文件。
php yii dnk/list user common-services,common-model-source,frontend-service
生成文件列表
common/services/UserService.php
模板common/models/sources/UserSource.php
模板frontend/service/UserService.php
模板
命令
php yii dnk/gen-models `string` `bool`
为针式表(部分)生成model
文件。
-
common/models
-
backend/models
-
前端模型
命令
php yii dnk/gen-controllers `string` `bool`
为针式表(部分)生成controller
文件。
-
后端控制器
- 模型控制器
backend/controller/cruds/UserController.php
模板
- 模型控制器
-
前端控制器
- 模型控制器
frontend/consrollers/UserController.php
模板
- 模型控制器
命令
php yii dnk/gen-services `string` `bool`
为针式表(部分)生成service
文件。
-
common/services
- common-service
common/services/UserService.php
模板
- common-service
-
backend/services
- 后端服务
backend/services/UserService.php
模板
- 后端服务
-
前端服务
- 前端服务
frontend/service/UserService.php
模板
- 前端服务
命令
php yii dnk/gen-tests `string` `bool`
为针式表(部分)生成test
文件。
示例
php yii dnk/gen-tests user
-
common/test/unit/
-
backend/test/unit/
-
frontend/test/unit/
命令
php yii dnk/gen-backend-service `string` `bool`
为针式表(部分)生成service
文件。
-
common/services
- common-service
common/services/UserService.php
模板
- common-service
-
backend/services
- 后端服务
backend/services/UserService.php
模板
- 后端服务
-
前端服务
- 前端服务
frontend/service/UserService.php
模板
- 前端服务
命令
php yii dnk/gen-backend-views `string` `bool`
为针式表(部分)生成views
文件。
- 后端视图
别名 php yii dnk/list user backend-views-form,backend-views-create,backend-views-update,backend-views-read,backend-views-list
命令
php yii dnk/gen-frontend-views `string` `bool`
为针式表(部分)生成views
文件。
别名
php yii dnk/list user frontend-views-read,frontend-views-list
盈利。
服务盈利
模型User
的示例
前端、后端和测试中创建的单个端点
common/UserService::create(UserForm $userForm);
backend/controllers/UserController {
action create {
if ($this->request->isPost)
{
(new backend/UserService())->create($this->request->post());
}
}
}
frontend/controllers/UserController {
action create {
if ($this->request->isPost)
{
(new frontend/UserService())->create($this->request->post());
}
}
}
frontend/controllers/api/v1/UserController {
action create {
if ($this->request->isPost)
{
(new frontend/UserService())->create($this->request->post());
}
}
}
// Test for all controllers...
tests/unit/user/CreateTest {
test{
$userForm = new UserForm();
(new common/UserService())->create($userForm);
}
}
资源盈利
example:
frontend/resources/user/UsereViewProfileResources {
public const TEMPLATE = 'user-view-profile';
pub string $display_name;
pub string $age;
__construct($user) {
$this->display_name = $user->name;
$this->age = $user->age;
// ... other code
}
}
frontend/controllers/UserController {
action viewProfile(int $id) {
$user = new (UserService())->findByID($id);
$R = new UsereViewProfileResources($user);
return $R->content();
}
}
frontend/controllers/api/v1/UserController {
action viewProfile(int $id) {
$user = new (UserService())->findByID($id);
$R = new UsereViewProfileResources($user);
return $R->json();
}
}
frontend/views/user/user-view-profile:
<?php
use frontend/resources/user/UsereViewProfileResources;
/** @var UsereViewProfileResources $R - autocomplete and there is no possibility to make a typo */
?>
<div>Profile: <?= $R->display_name ?></div>
<div>Age: <?= $R->age ?></div>
Yii2 设置
安装。
- 执行命令
composer require andy87/yii2-dnk-generator:dev-master
#OR
php composer.local require andy87/yii2-dnk-generator:dev-master
- 高级:
@console\config\main.php
//.. other code return [ // .. other config 'controllerMap' => [ // .. other config 'dnk' => [ // new block 'class' => andy87\dnk\GenerateController::class ] ] ]
root
- 包含 'frontend', 'backend', 'common' 等目录的目录command
- gii/... 命令的一部分parts
- 命令属性中用户 * 的表单列表baseClasses
- 生成文件的基类名称列表
-
执行命令 dnk/setup
-
更新
config
以满足您的需求,例如
use common\components\db\Tables; use common\components\core\BaseModel; use andy87\dnk\GenerateController; use andy87\dnk\source\base\BaseController; use andy87\dnk\source\base\BaseMigration; use andy87\dnk\source\base\BaseResource; use andy87\dnk\source\base\BaseService; //.. other code return [ // .. other config 'controllerMap' => [ // .. other config 'dnk' => [ // new block 'class' => GenerateController::class, 'command' => [ GenerateController::COMMAND_MODEL => implode(' ', [ '--modelClass={{CamelCase}}Source', '--ns=common\\models\\sources', '--tableName={{snake_case}}', '--baseClass={{BaseModelClassName}}', '&& yes' ]), GenerateController::COMMAND_CRUD => implode(' ', [ '--modelClass={{CamelCase}}', '--controllerNamespace=backend\\controllers\\crud', '--baseControllerClass=backend\\controllers\\cruds\\{{CamelCase}}Controller', '--viewPath=@backend\\views\\cruds\\{{snake_case}}', '--enableI18N=1', '&& yes' ]) ], 'entityList' => array_values(Tables::DATA), 'baseClasses' => [ GenerateController::BASE_MIGRATE_CLASS => BaseMigration::class, // extends for `Migrations` GenerateController::BASE_CONTROLLER_CLASS => BaseController::class, // extends for `Controllers` GenerateController::BASE_MODEL_CLASS => BaseModel::class, // extends for `Source` models GenerateController::BASE_SERVICE_CLASS => BaseService::class, // extends for `Services` GenerateController::BASE_RESOURCE_CLASS => BaseResource::class, // extends for `Resources` ] ] ] ]
- 添加
Entity
类:common\components\Entity
,添加public const
/** @var int */ public const CAMEL_CASE = 2;
- 添加
Tables
类:common\components\db
,更新public const NAMES
/** @var int */ public const NAMES = [ // other code ... Entity::CAMEL_CASE => 'snake_case', ];