elenyum / maker
This bundle make module width controller, service and entity from json or console command.
Installs: 16
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=8.1
- ext-json: *
- doctrine/dbal: ^3
- doctrine/doctrine-bundle: ^2.11
- doctrine/orm: ^3.0
- nette/php-generator: ^4.1
- symfony/console: ^5.4|^6.0|^7.0
- symfony/framework-bundle: ^5.4.24|^6.0|^7.0
- symfony/options-resolver: ^7.0
- symfony/security-bundle: ^7.0
- symfony/serializer: ^7.0
- symfony/validator: ^7.0
- symfony/yaml: ^7.0
Requires (Dev)
- phpunit/phpunit: ^11.0
- symfony/browser-kit: ^7.0
- symfony/css-selector: ^7.0
- symfony/phpunit-bridge: ^7.0
README
ElenyumMakerBundle is a tool for generating Symfony modules based on Elenyum specifications (ESL). The bundle allows you to create controllers, entities, services, and repositories from a pre-defined JSON file.
Installation
composer require elenyum/maker
Configuration
1. Add the Route
Manually add the route for module generation in config/routes/elenyum_maker.yaml
:
app.maker: path: /elenyum/dash/maker methods: - POST - GET defaults: { _controller: elenyum_maker }
2. Configure Security
Add access control rules in config/packages/security.yaml
:
security: access_control: - { path: ^/elenyum/dash/maker, roles: ROLE_ADMIN }
3. Bundle Configuration
Create a configuration file config/packages/elenyum_maker.yaml
:
elenyum_maker: cache: enable: false item_id: 'elenyum_maker' root: path: '%kernel.project_dir%/module' namespace: 'Module' prefix: 'Module' doctrine: names: - 'ElenyumAuthorizationBundle' securityName: 'api_key'
Usage
Console Command
To create a module, use the following console command:
php bin/console elenyum:make -f path/to/els.json
- -f, --file: Path to the ESL specification JSON file.
Aliases
Alias for the command:
php bin/console e:m -f path/to/els.json
Generated Files
When generating a module, the following structure is created:
/module/{ModuleName}/v1/
├── Controller
│ ├── {Entity}GetController.php
│ ├── {Entity}ListController.php
│ ├── {Entity}PostController.php
│ ├── {Entity}PutController.php
│ └── {Entity}DeleteController.php
├── Entity
│ └── {Entity}.php
├── Service
│ └── {Entity}Service.php
└── Repository
└── {Entity}Repository.php
- Controllers are created for
GET
,POST
,PUT
,DELETE
methods. - Services and repositories are generated for each entity.
OpenAPI Documentation
OpenAPI documentation is generated using the securityName
parameter from elenyum_maker.yaml
. It is applied in the controller attributes as shown:
#[Auth(name: 'Bearer', model: News::class)]
If no authorization is required, the parameter can be left empty.
Example of Full Route Configuration
app.maker: path: /elenyum/dash/maker methods: - POST - GET defaults: { _controller: elenyum_maker }
Notes
- Configuration and route files are created manually.
- Doctrine configuration is set in
elenyum_maker.yaml
. - The path for module generation:
%kernel.project_dir%/module
.