An open API service indexing awesome lists of open source software.

https://github.com/andy87/yii2-dnk-generator

Personal generator for follow `template path` pattern
https://github.com/andy87/yii2-dnk-generator

Last synced: 3 months ago
JSON representation

Personal generator for follow `template path` pattern

Awesome Lists containing this project

README

        

# DNK

Personal library on `Yii2 advanced` for generate files pack and follow pattern: `template path`, `adapter` and other.

### Navigation.
* ### [Description](#description)
* [Models & Forms](#description-models-forms)
* [Services](#description-services)
* [Controllers](#description-controllers)
* [Resources](#description-resources)
* ### [Use](#usage-examples)
* [dnk/setup](#command-setup)
* [dnk/run](#command-run)
* [dnk/gii-model](#command-gii-model)
* [dnk/gii-crud](#command-gii-crud)
* [dnk/list](#command-list)
* [dnk/gen-models](#command-gen-models)
* [dnk/gen-controllers](#command-gen-controllers)
* [dnk/gen-services](#command-gen-services)
* [dnk/gen-tests](#command-gen-tests)
* [dnk/gen-backend-views](#command-gen-backend-views)
* [dnk/gen-backend-views](#command-gen-backend-views)
* [dnk/gen-frontend-views](#command-gen-frontend-views)
* ### Profit
* [Service](#profit-services)
* [Resource](#profit-resources)
* ### [Setup](#setup)
* [composer](#setup-composer)
* [config](#setup-config)

## Description

Legend:
* S_P&M > == set `property` & `methods` in to
* Env:`all` == all environment ( common/console/backend/frontend )
* Env:`backend` == environment `backend`
* Env:`frontend` == environment `frontend`


### Models & Forms.

```
📄 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`
```


### Services.

```
📄 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`
```


### Controllers.

```
📄 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`
```


### Resources.

```
📄 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`
```

## Usage/Examples.


### command

```bash
php yii dnk/setup `bool`
```

| Parameter | Type | Description |
|:-------------|:-------|:-------------------------------------------------------|
| `overwrite` | `bool` | **optional**. overwrite exists file. defaulkt: `false` |

#### description

Generate files:
* `common/components/Entity.php` - service parts with labels
* `common/components/db/Setup.php` - Data base config: CHARACTER, COLLATE, ENGINE
* `common/components/db/Tables.php` - class with table names used Part::CONSTANT_NAME
* `common/components/resources/GridViewResource.php` - GridView Resources ( search, dataProvider )
* `backend/components/controllers/BackendController.php` - Base backend controller with common methods
* `frontend/components/controllers/FrontendController.php` - Base frontend controller with common methods
* `common/components/resources/crud/CreateResource.php` - common resource for view create
* `common/components/resources/crud/ListResource.php` - common resource for view list(index)
* `common/components/resources/crud/ReadResource.php` - common resource for view read(view)
* `common/components/resources/crud/UpdateResource.php` - common resource for view update
_____


### command

```bash
php yii dnk/run `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:----------------------------------------------------------------------------------|
| `entity` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

generate basic file pack:

#### description

- **console/migration**
- migration `console/migration/m000000_000000_create_table__user.php` [template](src/templates/console/migrations/migration.tpl)

- **common/models**
- common-model-source `common/models/sources/UserSource.php` [template](src/templates/common/models/sources/common-model-source.tpl)
- common-model-item `common/models/items/User.php` [template](src/templates/common/models/items/common-model-item.tpl)
- common-model-search `common/models/search/UserSearch.php` [template](src/templates/common/models/search/common-model-search.tpl)

- **common/services**
- common-service `common/services/UserService.php` [template](src/templates/common/services/common-service.tpl)

- **backend/models**
- backend-model-item `backend/models/items/User.php` [template](src/templates/backend/models/items/backend-model-item.tpl)
- backend-model-form `backend/models/forms/UserForm.php` [template](src/templates/backend/models/forms/backend-model-form.tpl)
- backend-model-search `backend/models/search/UserSearch.php` [template](src/templates/backend/models/search/backend-model-search.tpl)

- **backend/services**
- backend-service `backend/services/UserService.php` [template](src/templates/backend/services/backend-service.tpl)

- **backend/resources**
- backend-create-resource `backend/resources/user/UserCreateResource.php` [template](src/templates/backend/resources/model/backend-create-resource.tpl)
- backend-list-resource `backend/resources/user/UserListResource.php` [template](src/templates/backend/resources/model/backend-list-resource.tpl)
- backend-list-resource `backend/resources/user/UserReadResource.php` [template](src/templates/backend/resources/model/backend-list-resource.tpl)
- backend-update-resource `backend/resources/user/UserUpdateResource.php` [template](src/templates/backend/resources/model/backend-update-resource.tpl)

- **backend/controller**
- backend-model-controller `backend/controller/cruds/UserController.php` [template](src/templates/backend/controllers/cruds/backend-model-controller.tpl)

- **backend/views**
- backend-views-form `backend/views/user/_form-user.php` [template](src/templates/backend/views/model/_form-model.tpl)
- backend-views-create `backend/views/user/user-create.php` [template](src/templates/backend/views/model/model-create.tpl)
- backend-views-update `backend/views/user/user-update.php` [template](src/templates/backend/views/model/model-update.tpl)
- backend-views-read `backend/views/user/user-read.php` [template](src/templates/backend/views/model/model-read.tpl)
- backend-views-list `backend/views/user/user-list.php` [template](src/templates/backend/views/model/model-list.tpl)

- **frontend/models**
- frontend-model-item `frontend/models/items/User.php` [template](src/templates/frontend/models/items/frontend-model-item.tpl)
- frontend-model-form `frontend/models/forms/UserForm.php` [template](src/templates/frontend/models/forms/frontend-model-form.tpl)
- frontend-model-search `frontend/models/search/UserSearch.php` [template](src/templates/frontend/models/search/frontend-model-search.tpl)

- **frontend/service**
- frontend-service `frontend/service/UserService.php` [template](src/templates/frontend/services/frontend-service.tpl)

- **frontend/resources**
- frontend-list-resource `frontend/resources/user/UserListResource.php` [template](src/templates/frontend/resources/model/frontend-list-resource.tpl)
- frontend-read-resource`frontend/resources/user/UserReadResource.php` [template](src/templates/frontend/resources/model/frontend-read-resource.tpl)

- **frontend/controllers**
- frontend-model-controller `frontend/consrollers/UserController.php` [template](src/templates/frontend/controllers/frontend-model-controller.tpl)

- **frontend/views**
- frontend-views-read `frontend/views/user/user-read.php` [template](src/templates/frontend/views/model/model-read.tpl)
- frontend-views-list `frontend/views/user/user-list.php` [template](src/templates/frontend/views/model/model-list.tpl)
_____


### command

```bash
php yii dnk/gii-model `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:--------------|
| `entity` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate gii `model` for select table(part).

\* - generate list from config `parts`

#### Examples

```bash
php yii dnk/gii-model user
php yii dnk/gii-model *
```

alias
```bash
php yii gii/model
```
______


### command

```bash
php yii dnk/gii-crud `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate gii `crud` for select table(part).
\* - generate list from config `parts`

#### Examples

```bash
php yii dnk/gii-crud user
php yii dnk/gii-crud *
```
alias `php yii gii/crud`
______


### command

```bash
php yii dnk/list `string` `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `map` | `string` | **Required**. list of files to generate |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate selected fileType(list fileType) for needle table(part).

#### description

##### Generate once file.

```bash
php yii dnk/list `string` `string` `bool`
```

| Parameter | Type | Description |
|:------------| :------- |:----------------------------------------------------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `map` | `string` | **Required**. map of file types |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

\* - generate list from config `parts`

generate only: `common/services/UserService.php` [template](src/templates/common/services/common-service.tpl)

##### Generate selected files.

```bash
php yii dnk/list user common-services,common-model-source,frontend-service
```

generate file list:
- `common/services/UserService.php` [template](src/templates/common/services/common-service.tpl)
- `common/models/sources/UserSource.php` [template](src/templates/common/models/sources/common-model-source.tpl)
- `frontend/service/UserService.php` [template](src/templates/frontend/services/frontend-service.tpl)
______


### command

```bash
php yii dnk/gen-models `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate `model` files for needle table(part).

- **common/models**
- common-model-source `common/models/sources/UserSource.php` [template](src/templates/common/models/sources/common-model-source.tpl)
- common-model-item `common/models/items/User.php` [template](src/templates/common/models/items/common-model-item.tpl)

- **backend/models**
- backend-model-item `backend/models/items/User.php` [template](src/templates/backend/models/items/backend-model-item.tpl)
- backend-model-form `backend/models/forms/UserForm.php` [template](src/templates/backend/models/forms/backend-model-form.tpl)

- **frontend/models**
- frontend-model-item `frontend/models/items/User.php` [template](src/templates/frontend/models/items/frontend-model-item.tpl)
- frontend-model-form `frontend/models/forms/UserForm.php` [template](src/templates/frontend/models/forms/frontend-model-form.tpl)
_____


### command

```bash
php yii dnk/gen-controllers `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate `controller` files for needle table(part).

- **backend/controller**
- backend-model-controller `backend/controller/cruds/UserController.php` [template](src/templates/backend/controllers/cruds/backend-model-controller.tpl)

- **frontend/controllers**
- frontend-model-controller `frontend/consrollers/UserController.php` [template](src/templates/frontend/controllers/frontend-model-controller.tpl)
_____


### command

```bash
php yii dnk/gen-services `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate `service` files for needle table(part).

- **common/services**
- common-service `common/services/UserService.php` [template](src/templates/common/services/common-service.tpl)

- **backend/services**
- backend-service `backend/services/UserService.php` [template](src/templates/backend/services/backend-service.tpl)

- **frontend/service**
- frontend-service `frontend/service/UserService.php` [template](src/templates/frontend/services/frontend-service.tpl)
_____


### command

```bash
php yii dnk/gen-tests `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate `test` files for needle table(part).

Example:
```bash
php yii dnk/gen-tests user
```

- **common/test/unit/**
- service `common/tests/unit/services/UserServiceTest.php` [template](src/templates/common/tests/unit/services/common-test-unit-service.tpl)
- item `common/tests/unit/models/items/UserTest.php` [template](src/templates/common/tests/unit/models/items/common-test-unit-model-item.tpl)

- **backend/test/unit/**
- service `backend/tests/unit/services/UserServiceTest.php` [template](src/templates/backend/tests/unit/services/backend-test-unit-service.tpl)
- item `backend/tests/unit/models/items/UserTest.php` [template](src/templates/backend/tests/unit/models/items/backend-test-unit-model-item.tpl)
- form `backend/tests/unit/models/items/UserFormTest.php` [template](src/templates/backend/tests/unit/models/forms/backend-test-unit-model-form.tpl)

- **frontend/test/unit/**
- service `frontend/tests/unit/services/UserServiceTest.php` [template](src/templates/frontend/tests/unit/services/frontend-test-unit-service.tpl)
- item `frontend/tests/unit/models/items/UserTest.php` [template](src/templates/frontend/tests/unit/models/items/frontend-test-unit-model-item.tpl)
- form `frontend/tests/unit/models/items/UserFormTest.php` [template](src/templates/frontend/tests/unit/models/forms/frontend-test-unit-model-form.tpl)
_____


### command

```bash
php yii dnk/gen-backend-service `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate `service` files for needle table(part).

- **common/services**
- common-service `common/services/UserService.php` [template](src/templates/common/services/common-service.tpl)

- **backend/services**
- backend-service `backend/services/UserService.php` [template](src/templates/backend/services/backend-service.tpl)

- **frontend/service**
- frontend-service `frontend/service/UserService.php` [template](src/templates/frontend/services/frontend-service.tpl)
_____


### command

```bash
php yii dnk/gen-backend-views `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate `views` files for needle table(part).

- **backend/views**
- backend-views-form `backend/views/user/_form-user.php` [template](src/templates/backend/views/model/_form-model.tpl)
- backend-views-create `backend/views/user/user-create.php` [template](src/templates/backend/views/model/model-create.tpl)
- backend-views-update `backend/views/user/user-update.php` [template](src/templates/backend/views/model/model-update.tpl)
- backend-views-read `backend/views/user/user-read.php` [template](src/templates/backend/views/model/model-read.tpl)
- backend-views-list `backend/views/user/user-list.php` [template](src/templates/backend/views/model/model-list.tpl)

alias `php yii dnk/list user backend-views-form,backend-views-create,backend-views-update,backend-views-read,backend-views-list`
_____


### command

```bash
php yii dnk/gen-frontend-views `string` `bool`
```

| Parameter | Type | Description |
|:----------| :------- |:---------------------------------------|
| `entiry` | `string` | **Required**. model/table to work with * for use list fron property `parts` |
| `overwrite` | `bool` | **optional**. overwrite exists file. default: `false` |

Generate `views` files for needle table(part).

- **frontend/views**
- frontend-views-read `frontend/views/user/user-read.php` [template](src/templates/frontend/views/model/model-read.tpl)
- frontend-views-list `frontend/views/user/user-list.php` [template](src/templates/frontend/views/model/model-list.tpl)

alias
```bash
php yii dnk/list user frontend-views-read,frontend-views-list
```
_____

# Profit.


## Service profit

### Example for model `User`

once endpoint for creating on frontend, backend & tests
```
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);
}
}
```


## Resource Profit

```
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:

Profile: = $R->display_name ?>

Age: = $R->age ?>

```
_____


## Yii2 setups

### Install.


1. exec command
```bash
composer require andy87/yii2-dnk-generator:dev-master
#OR
php composer.local require andy87/yii2-dnk-generator:dev-master
```


2. Update config file:
- advanced: `@console\config\main.php`

```php
//.. other code

return [
// .. other config

'controllerMap' => [
// .. other config

'dnk' => [ // new block
'class' => andy87\dnk\GenerateController::class
]

]
]
```

* `root` - directory with folders 'frontend',backend',common' ...
* `command` - part of gii/... command
* `parts` - table lis. for user * in command property
* `baseClasses` - list of based class names for generated file

3. exec command [dnk/setup](#command-setup)

4. Update `config` for you require, by example:

```php

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`
]
]
]
]
```

5. Add `Entity`
Class: `common\components\Entity`, add `public const`
```php
/** @var int */
public const CAMEL_CASE = 2;
```

6. Add `Tables`
Class: `common\components\db`, update `public const NAMES`
```php
/** @var int */
public const NAMES = [
// other code ...
Entity::CAMEL_CASE => 'snake_case',
];
```