combustor ist ein Dienstprogrammpaket für Codeigniter 3, das Controller, Modelle und Ansichten basierend auf den bereitgestellten Datenbanktabellen generiert. Es verwendet das Describe-Paket zum Abrufen von Spalten aus einer Datenbanktabelle und als Grundlage für die Codegenerierung.
Codeigniter 3
Frameworks;combustor
erledigt den Rest. Extrahieren Sie zunächst den Inhalt des neuesten Codeigniter 3-Projekts:
$ wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.13.zip
$ unzip 3.1.13.zip -d ciacme
Konfigurieren Sie dann die Datenbankkonnektivitätseinstellungen des Projekts:
$ cd ciacme
$ nano application/config/database.php
// ciacme/application/config/database.php
// ...
$ db [ ' default ' ] = array (
' dsn ' => '' ,
' hostname ' => ' localhost ' ,
' username ' => '' ,
' password ' => '' ,
' database ' => '' ,
' dbdriver ' => ' mysqli ' ,
// ...
);
Als nächstes müssen Sie mit der Installation combustor
über Composer fortfahren:
$ composer require rougin/ combustor --dev
// ciacme/composer.json
{
// ...
"require-dev" :
{
"mikey179/vfsstream" : " 1.6.* " ,
"phpunit/phpunit" : " 4.* || 5.* || 9.* " ,
"rougin/ combustor " : " ~1.0 "
}
}
Installieren Sie abschließend die ORM-Wrapper wie Wildfire
oder Doctrine
:
$ vendor/bin/ combustor install:wildfire
$ vendor/bin/ combustor install:doctrine
Notiz
Mit dem Befehl install:wildfire
wird das Wildfire-Paket installiert, während install:doctrine
das Credo-Paket installiert.
Bevor Sie Befehle ausführen, stellen Sie bitte sicher, dass die Datenbanktabellen ordnungsgemäß definiert sind (Fremdschlüssel, Indizes, Beziehungen, Normalisierungen), um die Änderungen nach der Generierung der Codestruktur zu minimieren.
Fahren Sie außerdem bitte zunächst mit der Generierung von Modellen, Ansichten oder Controllern für Datenbanktabellen fort, die keine Beziehung zu anderen Tabellen in der Datenbank haben.
Tipp
combustor
generiert Controller, Modelle oder Ansichten basierend auf dem angegebenen Datenbankschema. Wenn im angegebenen Datenbankschema etwas nicht stimmt, generiert combustor
eine fehlerhafte Codebasis.
create:layout
Erstellen Sie eine neue Kopf- und Fußzeilendatei.
Optionen
--bootstrap
– fügt ein auf Bootstrap basierendes Styling hinzu--force
– generiert Dateien, auch wenn diese bereits vorhanden sindBeispiel
$ vendor/bin/ combustor create-layout --bootstrap
create:controller
Erstellen Sie einen neuen HTTP-Controller.
Argumente
table
– Name der DatenbanktabelleOptionen
--doctrine
– generiert einen Doctrine-basierten Controller--wildfire
– generiert einen Wildfire-basierten Controller--empty
– generiert einen leeren HTTP-Controller--force
– generiert Dateien, auch wenn diese bereits vorhanden sind Notiz
Wenn entweder Wildfire
oder Doctrine
installiert ist, muss es nicht als Option zum Ausführen eines bestimmten Befehls angegeben werden (z. B. --wildfire
). Wenn jedoch beide installiert sind, muss einem Befehl die Option --wildfire
oder --doctrine
hinzugefügt werden.
Beispiel
$ vendor/bin/ combustor create:controller users --wildfire
create:model
Erstellen Sie ein neues Modell.
Argumente
table
– Name der DatenbanktabelleOptionen
--doctrine
– generiert ein Doctrine-basiertes Modell--wildfire
– generiert ein Wildfire-basiertes Modell--empty
– generiert ein leeres Modell--force
– generiert Dateien, auch wenn diese bereits vorhanden sindBeispiel
$ vendor/bin/ combustor create:model users --wildfire
create:repository
Erstellen Sie ein neues Entitäts-Repository.
Argumente
table
– Name der DatenbanktabelleOptionen
--force
– generiert Dateien, auch wenn diese bereits vorhanden sindBeispiel
$ vendor/bin/ combustor create:repository users
Notiz
Dieser Befehl gilt nur für eine Doctrine-Implementierung.
create:view
Erstellen Sie Ansichtsvorlagen.
Argumente
table
– Name der DatenbanktabelleOptionen
--bootstrap
– fügt ein auf Bootstrap basierendes Styling hinzu--doctrine
– generiert doktrinbasierte Ansichten--wildfire
– generiert Wildfire-basierte Ansichten--force
– generiert Dateien, auch wenn diese bereits vorhanden sindBeispiel
$ vendor/bin/ combustor create:view users --bootstrap
create:scaffold
Erstellen Sie einen neuen HTTP-Controller, ein neues Modell und Ansichtsvorlagen.
Argumente
table
– Name der DatenbanktabelleOptionen
--bootstrap
– fügt ein auf Bootstrap basierendes Styling hinzu--doctrine
– generiert einen Doctrine-basierten Controller, ein Modell und Ansichten--wildfire
– generiert einen Wildfire-basierten Controller, ein Modell und Ansichten--force
– generiert Dateien, auch wenn diese bereits vorhanden sindBeispiel
$ vendor/bin/ combustor create:scaffold users --bootstrap --wildfire
Notiz
Wenn --doctrine
ausgewählt ist, führt der Befehl auch den Befehl create:repository
aus.
install:doctrine
Installieren Sie das Doctrine-Paket.
Beispiel
$ vendor/bin/ combustor install:doctrine
Notiz
Doctrine
nicht im Projekt installiert ist.Loader.php
im core
hinzugefügt. Die besagte Datei wird zum Laden benutzerdefinierter Repositorys verwendet, die auf EntityRepository
erweitert wurden.install:wildfire
Installieren Sie das Wildfire-Paket.
Beispiel
$ vendor/bin/ combustor install:wildfire
Notiz
Dieser Befehl ist verfügbar, wenn Wildfire
nicht im Projekt installiert ist.
remove:doctrine
Entfernen Sie das Doctrine-Paket.
Beispiel
$ vendor/bin/ combustor remove:doctrine
Notiz
Dieser Befehl ist verfügbar, wenn Doctrine
im Projekt installiert ist.
remove:wildfire
Entfernen Sie das Wildfire-Paket.
Beispiel
$ vendor/bin/ combustor remove:wildfire
Notiz
Dieser Befehl ist verfügbar, wenn Wildfire
im Projekt installiert ist.
combustor .yml
combustor
funktioniert derzeit sofort nach der Konfiguration basierend auf Installation
. Die Verwendung einer combustor .yml
kann jedoch für komplexe Setups wie die Angabe des neuen Anwendungspfads und den Ausschluss von Spalten verwendet werden:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
excluded_fields :
- created_at
- updated_at
- deleted_at
Um eine combustor .yml
zu erstellen, führen Sie einfach den Befehl initialize
aus:
$ vendor/bin/ combustor initialize
[PASS] " combustor .yml " added successfully !
app_path
Diese Eigenschaft gibt das application
an. Es kann in jedes Verzeichnis aktualisiert werden (z. B. ciacme/application
, ciacme/config
usw.), solange es die Datei config/config.php
im definierten Verzeichnis erkennen kann:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
# ...
Notiz
combustor
wird versuchen, den in app_path
angegebenen Pfad zu überprüfen, wenn es sich um ein gültiges Codeigniter 3
-Projekt handelt. Anschließend wird erneut geprüft, ob das application
vorhanden ist oder ob direkt über das in app_path
definierte Verzeichnis auf das config
zugegriffen werden kann.
excluded_fields
Angegebene Felder in dieser Eigenschaft sind von der Generierung in den folgenden Vorlagen ausgeschlossen:
controllers
models
views
(nur zum create
und edit
von Vorlagen) # combustor .yml
# ...
excluded_fields :
- created_at
- updated_at
- deleted_at
Notiz
Die Zeitstempel werden standardmäßig hinzugefügt, wenn zum ersten Mal eine combustor .yml
erstellt wird, da sie normalerweise automatisch von installierten ORMs wie Wildfire
oder Doctrine
ausgefüllt werden.
custom_fields
Standardmäßig verwenden alle von combustor
zum create
und edit
von Seiten generierten Felder den form_input
Helfer:
<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>
Allerdings müssen für einige Felder wie email
und boolean
Felder möglicherweise andere Formularhilfsprogramme verwendet werden:
<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>
Um dies zu erreichen, stellt combustor
ein Dienstprogramm zur Verarbeitung bestimmter Feldnamen oder Datentypen mithilfe von custom_fields
bereit:
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
Wenn Sie ein benutzerdefiniertes Feld hinzufügen, erstellen Sie bitte eine Klasse, die sich auf die Colfield
-Klasse erstreckt:
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 );
}
}
Nachdem Sie das benutzerdefinierte Feld erstellt haben, fügen Sie einfach den Klassennamen zur combustor .yml
hinzu:
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
- AcmeFieldsEmailField
Weitere Informationen zu den letzten Änderungen finden Sie im CHANGELOG.
$ composer test
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie unter LIZENZ.