combustor é um pacote de utilitários para Codeigniter 3 que gera controladores, modelos e visualizações com base nas tabelas de banco de dados fornecidas. Ele usa o pacote Describe para obter colunas de uma tabela de banco de dados e como base para geração de código.
Codeigniter 3
;combustor
fará o resto. Extraia primeiro o conteúdo do projeto Codeigniter 3 mais recente:
$ wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.13.zip
$ unzip 3.1.13.zip -d ciacme
Em seguida, defina as configurações de conectividade do banco de dados do projeto:
$ cd ciacme
$ nano application/config/database.php
// ciacme/application/config/database.php
// ...
$ db [ ' default ' ] = array (
' dsn ' => '' ,
' hostname ' => ' localhost ' ,
' username ' => '' ,
' password ' => '' ,
' database ' => '' ,
' dbdriver ' => ' mysqli ' ,
// ...
);
A seguir é prosseguir com a instalação combustor
via 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 os wrappers ORM como Wildfire
ou Doctrine
:
$ vendor/bin/ combustor install:wildfire
$ vendor/bin/ combustor install:doctrine
Observação
Usar o comando install:wildfire
instala o pacote Wildfire enquanto install:doctrine
instala o pacote Credo.
Antes de executar qualquer comando, certifique-se de que as tabelas do banco de dados estejam definidas corretamente (chaves estrangeiras, índices, relacionamentos, normalizações) para minimizar as modificações após a geração da estrutura do código.
Além disso, prossiga primeiro na geração de modelos, visualizações ou controladores para tabelas de banco de dados que não têm relacionamento com outras tabelas no banco de dados.
Dica
combustor
gerará controladores, modelos ou visualizações com base no esquema de banco de dados especificado. Se houver algo errado no esquema do banco de dados especificado, combustor
gerará uma base de código incorreta.
create:layout
Crie um novo arquivo de cabeçalho e rodapé.
Opções
--bootstrap
- adiciona estilo baseado em Bootstrap--force
- gera arquivos mesmo que eles já existamExemplo
$ vendor/bin/ combustor create-layout --bootstrap
create:controller
Crie um novo controlador HTTP.
Argumentos
table
- nome da tabela do banco de dadosOpções
--doctrine
- gera um controlador baseado em Doctrine--wildfire
- gera um controlador baseado no Wildfire--empty
- gera um controlador HTTP vazio--force
- gera arquivos mesmo que eles já existam Observação
Se Wildfire
ou Doctrine
estiverem instalados, não há necessidade de especificá-lo como opção para executar um comando específico (por exemplo, --wildfire
). No entanto, se ambos estiverem instalados, um comando deve ter uma opção --wildfire
ou --doctrine
adicionada.
Exemplo
$ vendor/bin/ combustor create:controller users --wildfire
create:model
Crie um novo modelo.
Argumentos
table
- nome da tabela do banco de dadosOpções
--doctrine
- gera um modelo baseado em Doutrina--wildfire
- gera um modelo baseado no Wildfire--empty
- gera um modelo vazio--force
- gera arquivos mesmo que eles já existamExemplo
$ vendor/bin/ combustor create:model users --wildfire
create:repository
Crie um novo repositório de entidade.
Argumentos
table
- nome da tabela do banco de dadosOpções
--force
- gera arquivos mesmo que eles já existamExemplo
$ vendor/bin/ combustor create:repository users
Observação
Este comando só é aplicável a uma implementação do Doctrine.
create:view
Crie modelos de visualização.
Argumentos
table
- nome da tabela do banco de dadosOpções
--bootstrap
- adiciona estilo baseado em Bootstrap--doctrine
- gera visualizações baseadas em Doutrina--wildfire
- gera visualizações baseadas no Wildfire--force
- gera arquivos mesmo que eles já existamExemplo
$ vendor/bin/ combustor create:view users --bootstrap
create:scaffold
Crie um novo controlador HTTP, modelo e modelos de visualização.
Argumentos
table
- nome da tabela do banco de dadosOpções
--bootstrap
- adiciona estilo baseado em Bootstrap--doctrine
- gera um controlador, modelo e visualizações baseados em Doctrine--wildfire
- gera um controlador, modelo e visualizações baseados no Wildfire--force
- gera arquivos mesmo que eles já existamExemplo
$ vendor/bin/ combustor create:scaffold users --bootstrap --wildfire
Observação
Se --doctrine
for selecionado, o comando também executará o comando create:repository
.
install:doctrine
Instale o pacote Doctrine.
Exemplo
$ vendor/bin/ combustor install:doctrine
Observação
Doctrine
não estiver instalado no projeto.Loader.php
no diretório core
. O referido arquivo é usado para carregar repositórios personalizados estendidos para EntityRepository
.install:wildfire
Instale o pacote Wildfire.
Exemplo
$ vendor/bin/ combustor install:wildfire
Observação
Este comando estará disponível se Wildfire
não estiver instalado no projeto.
remove:doctrine
Remova o pacote Doctrine.
Exemplo
$ vendor/bin/ combustor remove:doctrine
Observação
Este comando estará disponível se Doctrine
estiver instalado no projeto.
remove:wildfire
Remova o pacote Wildfire.
Exemplo
$ vendor/bin/ combustor remove:wildfire
Observação
Este comando estará disponível se Wildfire
estiver instalado no projeto.
combustor .yml
combustor
atualmente funciona imediatamente após a configuração baseada na Installation
. No entanto, o uso de um combustor .yml
pode ser usado para configurações complexas, como especificar o novo caminho do aplicativo e excluir colunas:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
excluded_fields :
- created_at
- updated_at
- deleted_at
Para criar um combustor .yml
, basta executar o comando initialize
:
$ vendor/bin/ combustor initialize
[PASS] " combustor .yml " added successfully !
app_path
Esta propriedade especifica o diretório application
. Ele pode ser atualizado para qualquer diretório (por exemplo, ciacme/application
, ciacme/config
, etc.), desde que possa detectar o arquivo config/config.php
do diretório definido:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
# ...
Observação
combustor
tentará verificar o caminho especificado em app_path
se for um projeto Codeigniter 3
válido. Em seguida, ele realizará outra verificação se o diretório application
existe ou se o diretório config
pode ser acessado diretamente do diretório definido em app_path
.
excluded_fields
Os campos especificados nesta propriedade são excluídos da geração para os seguintes modelos:
controllers
models
views
(somente para create
e edit
modelos) # combustor .yml
# ...
excluded_fields :
- created_at
- updated_at
- deleted_at
Observação
Os carimbos de data e hora são adicionados por padrão ao criar um combustor .yml
pela primeira vez, pois geralmente são preenchidos automaticamente por ORMs instalados, como Wildfire
ou Doctrine
.
custom_fields
Por padrão, todos os campos gerados pelo combustor
para create
e edit
páginas usarão o auxiliar 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>
No entanto, alguns campos como email
e tipos boolean
podem precisar usar outros auxiliares de formulário:
<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 conseguir isso, combustor
fornece um utilitário para lidar com nomes de campos ou tipos de dados especificados usando custom_fields
:
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
Ao adicionar um campo personalizado, crie uma classe que se estenda à classe 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 );
}
}
Depois de criar o campo personalizado, basta adicionar o nome da classe ao combustor .yml
:
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
- AcmeFieldsEmailField
Consulte CHANGELOG para obter mais informações sobre o que mudou recentemente.
$ composer test
A licença MIT (MIT). Consulte LICENÇA para obter mais informações.