combustor es un paquete de utilidades para Codeigniter 3 que genera controladores, modelos y vistas basados en las tablas de bases de datos proporcionadas. Utiliza el paquete Describe para obtener columnas de una tabla de base de datos y como base para la generación de código.
Codeigniter 3
;combustor
hará el resto. Primero extraiga el contenido del último proyecto de Codeigniter 3:
$ wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.13.zip
$ unzip 3.1.13.zip -d ciacme
Luego configure los ajustes de conectividad de la base de datos del proyecto:
$ cd ciacme
$ nano application/config/database.php
// ciacme/application/config/database.php
// ...
$ db [ ' default ' ] = array (
' dsn ' => '' ,
' hostname ' => ' localhost ' ,
' username ' => '' ,
' password ' => '' ,
' database ' => '' ,
' dbdriver ' => ' mysqli ' ,
// ...
);
Lo siguiente es proceder a instalar combustor
a través de Composer:
$ composer require rougin/ combustor --dev
// ciacme/composer.json
{
// ...
"require-dev" :
{
"mikey179/vfsstream" : " 1.6.* " ,
"phpunit/phpunit" : " 4.* || 5.* || 9.* " ,
"rougin/ combustor " : " ~1.0 "
}
}
Por último, instale los contenedores ORM como Wildfire
o Doctrine
:
$ vendor/bin/ combustor install:wildfire
$ vendor/bin/ combustor install:doctrine
Nota
El uso del comando install:wildfire
instala el paquete Wildfire mientras que install:doctrine
instala el paquete Credo.
Antes de ejecutar cualquier comando, asegúrese de que las tablas de la base de datos estén definidas correctamente (claves externas, índices, relaciones, normalizaciones) para minimizar las modificaciones después de que se haya generado la estructura del código.
Además, proceda primero a generar modelos, vistas o controladores para tablas de bases de datos que no tengan relación con otras tablas de la base de datos.
Consejo
combustor
generará controladores, modelos o vistas basadas en el esquema de base de datos especificado. Si hay algún problema en el esquema de la base de datos especificada, combustor
generará una base de código incorrecta.
create:layout
Cree un nuevo archivo de encabezado y pie de página.
Opciones
--bootstrap
: agrega estilo basado en Bootstrap--force
- genera archivos incluso si ya existenEjemplo
$ vendor/bin/ combustor create-layout --bootstrap
create:controller
Cree un nuevo controlador HTTP.
Argumentos
table
: nombre de la tabla de la base de datosOpciones
--doctrine
- genera un controlador basado en Doctrine--wildfire
: genera un controlador basado en Wildfire--empty
: genera un controlador HTTP vacío--force
- genera archivos incluso si ya existen Nota
Si está instalado Wildfire
o Doctrine
, no es necesario especificarlo como opción para ejecutar un comando específico (por ejemplo, --wildfire
). Sin embargo, si ambos están instalados, un comando debe tener agregada la opción --wildfire
o --doctrine
.
Ejemplo
$ vendor/bin/ combustor create:controller users --wildfire
create:model
Crea un nuevo modelo.
Argumentos
table
: nombre de la tabla de la base de datosOpciones
--doctrine
- genera un modelo basado en Doctrine--wildfire
: genera un modelo basado en Wildfire--empty
- genera un modelo vacío--force
- genera archivos incluso si ya existenEjemplo
$ vendor/bin/ combustor create:model users --wildfire
create:repository
Cree un nuevo repositorio de entidades.
Argumentos
table
: nombre de la tabla de la base de datosOpciones
--force
- genera archivos incluso si ya existenEjemplo
$ vendor/bin/ combustor create:repository users
Nota
Este comando sólo es aplicable a una implementación de Doctrine.
create:view
Crear plantillas de vista.
Argumentos
table
: nombre de la tabla de la base de datosOpciones
--bootstrap
: agrega estilo basado en Bootstrap--doctrine
- genera vistas basadas en Doctrine--wildfire
: genera vistas basadas en Wildfire--force
- genera archivos incluso si ya existenEjemplo
$ vendor/bin/ combustor create:view users --bootstrap
create:scaffold
Cree un nuevo controlador HTTP, modelo y plantillas de vista.
Argumentos
table
: nombre de la tabla de la base de datosOpciones
--bootstrap
: agrega estilo basado en Bootstrap--doctrine
: genera un controlador, un modelo y vistas basados en Doctrine--wildfire
: genera un controlador, un modelo y vistas basados en Wildfire--force
- genera archivos incluso si ya existenEjemplo
$ vendor/bin/ combustor create:scaffold users --bootstrap --wildfire
Nota
Si se selecciona --doctrine
, el comando también ejecutará el comando create:repository
.
install:doctrine
Instale el paquete Doctrina.
Ejemplo
$ vendor/bin/ combustor install:doctrine
Nota
Doctrine
no está instalado en el proyecto.Loader.php
en el directorio core
. Dicho archivo se utiliza para cargar repositorios personalizados extendidos a EntityRepository
.install:wildfire
Instale el paquete Wildfire.
Ejemplo
$ vendor/bin/ combustor install:wildfire
Nota
Este comando estará disponible si Wildfire
no está instalado en el proyecto.
remove:doctrine
Retire el paquete Doctrine.
Ejemplo
$ vendor/bin/ combustor remove:doctrine
Nota
Este comando estará disponible si Doctrine
está instalado en el proyecto.
remove:wildfire
Retire el paquete Wildfire.
Ejemplo
$ vendor/bin/ combustor remove:wildfire
Nota
Este comando estará disponible si Wildfire
está instalado en el proyecto.
combustor .yml
combustor
actualmente funciona de inmediato después de la configuración basada en Installation
. Sin embargo, el uso de una combustor .yml
se puede utilizar para configuraciones complejas, como especificar la nueva ruta de la aplicación y excluir columnas:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
excluded_fields :
- created_at
- updated_at
- deleted_at
Para crear una combustor .yml
, simplemente ejecute el comando initialize
:
$ vendor/bin/ combustor initialize
[PASS] " combustor .yml " added successfully !
app_path
Esta propiedad especifica el directorio application
. Puede actualizarse a cualquier directorio (por ejemplo, ciacme/application
, ciacme/config
, etc.) siempre que pueda detectar el archivo config/config.php
del directorio definido:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
# ...
Nota
combustor
intentará verificar la ruta especificada en app_path
si es un proyecto Codeigniter 3
válido. Luego realizará otra verificación si el directorio application
existe o si se puede acceder al directorio config
directamente desde el directorio definido en app_path
.
excluded_fields
Los campos especificados en esta propiedad están excluidos de la generación en las siguientes plantillas:
controllers
models
views
(solo para create
y edit
plantillas) # combustor .yml
# ...
excluded_fields :
- created_at
- updated_at
- deleted_at
Nota
Las marcas de tiempo se agregan de forma predeterminada al crear un combustor .yml
por primera vez, ya que generalmente se completan automáticamente con ORM instalados como Wildfire
o Doctrine
.
custom_fields
De forma predeterminada, todos los campos generados por combustor
para create
y edit
páginas utilizarán el asistente form_input
:
<div class="mb- 3 ">
<?= form_label ( ' Email ' , '' , [ ' class ' => ' form-label mb-0 ' ]) ?>
<?= form_input ( ' email ' , set_value ( ' email ' ), ' class="form-control" ' ) ?>
<?= form_error ( ' email ' , ' <div><span class="text-danger small"> ' , ' </span></div> ' ) ?>
</div>
Sin embargo, es posible que algunos campos, como email
y los tipos boolean
, necesiten utilizar otros asistentes de formulario:
<div class="mb- 3 ">
<?= form_label ( ' Email ' , '' , [ ' class ' => ' form-label mb-0 ' ]) ?>
// Still using form_input, but the type is "email" instead
<?= form_input ([ ' type ' => ' email ' , ' name ' => ' email ' , ' value ' => set_value ( ' email ' ), ' class ' => ' form-control ' ]) ?>
<?= form_error ( ' email ' , ' <div><span class="text-danger small"> ' , ' </span></div> ' ) ?>
</div>
<div class="mb- 3 ">
<?= form_label ( ' Admin ' , '' , [ ' class ' => ' form-label mb-0 ' ]) ?>
// Use "form_checkbox" for boolean-based data types
<div>
<?= form_checkbox ( ' admin ' , true , set_value ( ' admin ' ), ' class="form-check-input" ' ) ?>
</div>
<?= form_error ( ' admin ' , ' <div><span class="text-danger small"> ' , ' </span></div> ' ) ?>
</div>
Para lograr esto, combustor
proporciona una utilidad para manejar nombres de campos o tipos de datos específicos usando custom_fields
:
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
Al agregar un campo personalizado, cree una clase que se extienda a la clase Colfield
:
namespace Acme Fields ;
use Rougin combustor Colfield ;
class EmailField extends Colfield
{
protected $ class = ' form-control ' ;
/**
* If $name is specified, it will check if the current field
* name matches the in this $name field.
*/
protected $ name = ' email ' ;
public function getPlate ()
{
$ field = $ this -> accessor ;
$ class = $ this -> getClass ();
/** @var string */
$ name = $ this -> getName ();
$ html = ' <?= form_input([ ' type ' => ' email ' , ' name ' => '' . $ name . '' , ' value ' => set_value( '' . $ name . '' )]) ?> ' ;
if ( $ this -> edit )
{
$ html = str_replace ( ' set_value( '' . $ name . '' ) ' , ' set_value( '' . $ name . '' , ' . $ field . ' ) ' , $ html );
}
$ html = str_replace ( ' )]) ?> ' , ' ), ' class ' => '' . $ class . '' ]) ?> ' , $ html );
return array ( $ html );
}
}
Luego, después de crear el campo personalizado, simplemente agregue el nombre de la clase al combustor .yml
:
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
- AcmeFieldsEmailField
Consulte CHANGELOG para obtener más información sobre los cambios recientes.
$ composer test
La Licencia MIT (MIT). Consulte LICENCIA para obtener más información.