Para poder crear una nueva plantilla en Backend, la secuencia es la siguiente.
1) Ir a la carpeta src/Entity
Copiar una plantilla existente a una plantilla nueva.
Requesítos de la plantilla nueva, por ejemplo la tabla geo_zone de la base de datos OpenCart.
El nombre de la nueva plantilla será Geo_zone, es el mismo nombre de la tabla, primer digito mayúscula.
Los datos de la tabla geo_zone es:
geo_zone_id INT 11 (auto_increment)
name VARCHAR 32 Longitud
description VARCHAR 255 Longitud
date_added DATETIME
date_modified DATETIME
La plantilla más parecida a los datos de la tabla Geo_zone es Category.
Reemplazar en la plantilla copiada con la opción reemplazar en VS code la palabra Category por Geo_zone .
Realizar las adaptaciones y modificar todas las funciones con los campos de la nueva tabla.
Tener cuidado al cambiar los campos, ver los diferentes formatos de cada campo (String, DataTime, Boolean, Double ,Integer).
2) Ir a la carpeta src/Service
Al realizar la copia de la plantilla category, copiaremos la carpeta Category a Geo_zone con todos sus programas.
Los programas son Create.php, Delete.php, Find.php, Update.php.
Reemplazar en todos programas con la opción reemplazar en VS code la palabra Category por Geo_zone .
3) Ir a la carpeta src/Controller
Al realizar la copia de la plantilla category, copiaremos la carpeta Category a Geo_zone con todos sus programas.
Los programas son Base.php, Create.php, Delete.php, GetAll.php, GetOne.php, GetScheme.php, Update.php.
Reemplazar en todos los programas con la opción reemplazar en VS code la palabra Category por Geo_zone .
4) Ir a la carpeta app
Programa Services.php incluir use App/Service\Geo_zone
Copiar las instrucciones que hay en el programa del contenedor Category, abajo y después reemplazar por Geo_zone.
Copiar // Category abajo después de Manufacturer
$container[‘Category_find_service’] = static fn (): Category\Find =>new Category\Find();
$container[‘Category_create_service’] = static fn (): Category\Create=>new Category\Create();
$container[‘Category_update_service’] = static fn (): Category\Update=>new Category\Update();
$container[‘Category_delete_service’] = static fn (): Category\Delete=>new Category\Delete();
Cambiar Category por Geo_zone (Quedaría de la siguiente forma)
$container[‘Geo_zone_find_service’] = static fn (): Geo_zone\Find =>new Geo_zone\Find()
$container[‘Geo_zone_create_service’] = static fn (): Geo_zone\Create=>new Geo_zone\Create();
$container[‘Geo_zone_update_service’] = static fn (): Geo_zone\Update=>new Geo_zone\Update();
$container[‘Geo_zone_delete_service’] = static fn (): Geo_zone\Delete=>new Geo_zone\Delete();
5) Programa Routes.php
Incluir use App/Service\Geo_zone
Copiar toda la ruta category abajo y realizar el cambio de Category por Geo_zone.
$group->group(‘/category’, function (Group $group)
$group->get(‘/’,Category\GetScheme::class);
$group->get(‘/read’,Category\GetAll::class);
$group->get(‘/read/{category_id:[0-9]+}’,Category\GetOne::class);
$group->post(‘/new’,Category\Create::class);
$group->post(‘/delete/{category_id:[0-9]+}’,Category\Delete::class); // servidor (No admite put y delete)
$group->post(‘/update/{category_id:[0-9]+}’,Category\Update::class); // servidor (No admite put y delete)
$group->put(‘/update/{category_id:[0-9]+}’,Category\Update::class); // servidor (admite put y delete)
$group->delete(‘/delete/{category_id:[0-9]+}’,Category\Delete::class); // servidor (admite put y delete)
Quedaría así, pero hay que tener cuidado con el nombre del campo id de geo_zone, se llama geo_zone_id .
Hay que cambiar category_id por geo_zone_id (Revisar la plantilla y la tabla, es el campo con formato (auto_increment).
$group->group(‘/geo_zone’, function (Group $group)
$group->get(‘/’,Geo_zone\GetScheme::class);
$group->get(‘/read’,Geo_zone\GetAll::class);
$group->get(‘/read/{geo_zone_id:[0-9]+}’,Geo_zone\GetOne::class);
$group->post(‘/new’,Geo_zone\Create::class);
$group->post(‘/delete/{geo_zone_id:[0-9]+}’,Geo_zone\Delete::class); // servidor (No admite put y delete)
$group->post(‘/update/{geo_zone_id:[0-9]+}’,Geo_zone\Update::class); // servidor (No admite put y delete)
$group->put(‘/update/{geo_zone_id:[0-9]+}’,Geo_zone\Update::class); // servidor (admite put y delete)
$group->delete(‘/delete/{geo_zone_id:[0-9]+}’,Geo_zone\Delete::class); // servidor (admite put y delete)
});
6) Ir a la carpeta /resources/docs/schemas
Copiar el esquema Category.yaml a Geo_zone.yaml
Reemplazar en la plantilla copiada con la opción reemplazar en VS code la palabra category por geo_zone .
Hay que modificar el esquema de la tabla, está debajo de la etiqueta GetOne:
1) Incluir los campos indicando el nombre, formato y un ejemplo
2) Indicar los campos obligatorios en la etiqueta required:
3) Indicar un ejemplo en la etiqueta example: , de cada campo y su dato.
MUY IMPORTANTE:
El programa que lee y visualiza la plantilla .yaml, es sensitive con las posiciones de las etiquetas, si se desplazan dará error de lectura.
Para visualizar los datos por rest de la nueva tabla seria para read ‘/opencard/api/geo_zone/read’ y así con las demás rutas.