combustor — это пакет утилит для Codeigniter 3, который генерирует контроллеры, модели и представления на основе предоставленных таблиц базы данных. Он использует пакет Describe для получения столбцов из таблицы базы данных и в качестве основы для генерации кода.
Codeigniter 3
;combustor
сделает все остальное. Сначала извлеките содержимое последнего проекта Codeigniter 3:
$ wget https://github.com/bcit-ci/CodeIgniter/archive/3.1.13.zip
$ unzip 3.1.13.zip -d ciacme
Затем настройте параметры подключения к базе данных проекта:
$ cd ciacme
$ nano application/config/database.php
// ciacme/application/config/database.php
// ...
$ db [ ' default ' ] = array (
' dsn ' => '' ,
' hostname ' => ' localhost ' ,
' username ' => '' ,
' password ' => '' ,
' database ' => '' ,
' dbdriver ' => ' mysqli ' ,
// ...
);
Далее следует приступить к установке combustor
через Composer:
$ composer require rougin/ combustor --dev
// ciacme/composer.json
{
// ...
"require-dev" :
{
"mikey179/vfsstream" : " 1.6.* " ,
"phpunit/phpunit" : " 4.* || 5.* || 9.* " ,
"rougin/ combustor " : " ~1.0 "
}
}
Наконец, установите оболочки ORM, такие как Wildfire
или Doctrine
:
$ vendor/bin/ combustor install:wildfire
$ vendor/bin/ combustor install:doctrine
Примечание
Команда install:wildfire
устанавливает пакет Wildfire, а команда install:doctrine
устанавливает пакет Credo.
Прежде чем выполнять какие-либо команды, убедитесь, что таблицы базы данных определены правильно (внешние ключи, индексы, связи, нормализация), чтобы свести к минимуму изменения после создания структуры кода.
Кроме того, сначала приступайте к созданию моделей, представлений или контроллеров для таблиц базы данных, которые не имеют связи с другими таблицами в базе данных.
Кончик
combustor
будет генерировать контроллеры, модели или представления на основе указанной схемы базы данных. Если в указанной схеме базы данных что-то не так, combustor
сгенерирует плохую кодовую базу.
create:layout
Создайте новый файл верхнего и нижнего колонтитула.
Параметры
--bootstrap
— добавляет стиль на основе Bootstrap--force
— генерирует файлы, даже если они уже существуютПример
$ vendor/bin/ combustor create-layout --bootstrap
create:controller
Создайте новый HTTP-контроллер.
Аргументы
table
- имя таблицы базы данныхПараметры
--doctrine
— генерирует контроллер на основе Doctrine--wildfire
— генерирует контроллер на основе Wildfire--empty
— генерирует пустой HTTP-контроллер--force
— генерирует файлы, даже если они уже существуют Примечание
Если установлен Wildfire
или Doctrine
, нет необходимости указывать его в качестве опции для выполнения указанной команды (например, --wildfire
). Однако, если установлены оба, в команду необходимо добавить параметр --wildfire
или --doctrine
.
Пример
$ vendor/bin/ combustor create:controller users --wildfire
create:model
Создайте новую модель.
Аргументы
table
- имя таблицы базы данныхПараметры
--doctrine
— генерирует модель на основе Doctrine--wildfire
— генерирует модель на основе Wildfire--empty
— генерирует пустую модель--force
— генерирует файлы, даже если они уже существуютПример
$ vendor/bin/ combustor create:model users --wildfire
create:repository
Создайте новый репозиторий сущностей.
Аргументы
table
- имя таблицы базы данныхПараметры
--force
— генерирует файлы, даже если они уже существуютПример
$ vendor/bin/ combustor create:repository users
Примечание
Эта команда применима только к реализации Doctrine.
create:view
Создание шаблонов представлений.
Аргументы
table
- имя таблицы базы данныхПараметры
--bootstrap
— добавляет стиль на основе Bootstrap--doctrine
— генерирует представления на основе Doctrine--wildfire
— генерирует представления на основе Wildfire--force
— генерирует файлы, даже если они уже существуютПример
$ vendor/bin/ combustor create:view users --bootstrap
create:scaffold
Создайте новый контроллер HTTP, модель и шаблоны представлений.
Аргументы
table
- имя таблицы базы данныхПараметры
--bootstrap
— добавляет стиль на основе Bootstrap--doctrine
— генерирует контроллер, модель и представления на основе Doctrine.--wildfire
— генерирует контроллер, модель и представления на основе Wildfire.--force
— генерирует файлы, даже если они уже существуютПример
$ vendor/bin/ combustor create:scaffold users --bootstrap --wildfire
Примечание
Если выбран --doctrine
, команда также выполнит команду create:repository
.
install:doctrine
Установите пакет Doctrine.
Пример
$ vendor/bin/ combustor install:doctrine
Примечание
Doctrine
.Loader.php
в core
каталог. Указанный файл используется для загрузки пользовательских репозиториев, расширенных до EntityRepository
.install:wildfire
Установите пакет Wildfire.
Пример
$ vendor/bin/ combustor install:wildfire
Примечание
Эта команда будет доступна, если в проекте не установлен Wildfire
.
remove:doctrine
Удалите пакет Doctrine.
Пример
$ vendor/bin/ combustor remove:doctrine
Примечание
Эта команда будет доступна, если в проекте установлена Doctrine
.
remove:wildfire
Удалите пакет Wildfire.
Пример
$ vendor/bin/ combustor remove:wildfire
Примечание
Эта команда будет доступна, если в проекте установлен Wildfire
.
combustor .yml
В настоящее время combustor
работает «из коробки» после настройки на основе Installation
. Однако использование combustor .yml
можно использовать для сложных настроек, таких как указание нового пути приложения и исключение столбцов:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
excluded_fields :
- created_at
- updated_at
- deleted_at
Чтобы создать combustor .yml
, просто запустите команду initialize
:
$ vendor/bin/ combustor initialize
[PASS] " combustor .yml " added successfully !
app_path
Это свойство указывает каталог application
. Он может быть обновлен в любой каталог (например, ciacme/application
, ciacme/config
и т. д.), если он может обнаружить файл config/config.php
из определенного каталога:
# combustor .yml
app_path : %%CURRENT_DIRECTORY%%/Sample
# ...
Примечание
combustor
попытается проверить путь, указанный в app_path
, является ли он допустимым проектом Codeigniter 3
. Затем он выполнит еще одну проверку, существует ли каталог application
или можно ли получить доступ к каталогу config
непосредственно из каталога, определенного в app_path
.
excluded_fields
Указанные поля в этом свойстве исключаются из создания следующих шаблонов:
controllers
models
views
(только для create
и edit
шаблонов) # combustor .yml
# ...
excluded_fields :
- created_at
- updated_at
- deleted_at
Примечание
Временные метки добавляются по умолчанию при первом создании combustor .yml
, поскольку они обычно заполняются автоматически установленными ORM, такими как Wildfire
или Doctrine
.
custom_fields
По умолчанию все поля, генерируемые combustor
для create
и edit
страниц, будут использовать помощник 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>
Однако для некоторых полей, таких как email
и boolean
типы, может потребоваться использование других помощников формы:
<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>
Для этого combustor
предусмотрена утилита для обработки указанных имен полей или типов данных с помощью custom_fields
:
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
При добавлении настраиваемого поля создайте класс, расширяющий класс 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 );
}
}
Затем, после создания настраиваемого поля, просто добавьте имя класса в combustor .yml
:
# combustor .yml
# ...
custom_fields :
- Rougin combustor TemplateFieldsBooleanField
- AcmeFieldsEmailField
Пожалуйста, посетите CHANGELOG для получения дополнительной информации о том, что изменилось за последнее время.
$ composer test
Лицензия MIT (MIT). Пожалуйста, смотрите ЛИЦЕНЗИЮ для получения дополнительной информации.