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.
composer require elenyum/maker
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 }
Add access control rules in config/packages/security.yaml:
security:
access_control:
- { path: ^/elenyum/dash/maker, roles: ROLE_ADMIN }
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'
To create a module, use the following console command:
php bin/console elenyum:make -f path/to/els.json
Alias for the command:
php bin/console e:m -f path/to/els.json
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
GET, POST, PUT, DELETE methods.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.
app.maker:
path: /elenyum/dash/maker
methods:
- POST
- GET
defaults: { _controller: elenyum_maker }
elenyum_maker.yaml.%kernel.project_dir%/module.How can I help you explore Laravel packages today?