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 ' ,
// ...
);
接下来是通过 Composer 继续安装combustor
:
$ 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
安装学说包。
例子
$ vendor/bin/ combustor install:doctrine
笔记
Doctrine
,则此命令将可用。core
目录中添加了一个Loader.php
。所述文件用于加载扩展至EntityRepository
自定义存储库。install:wildfire
安装野火包。
例子
$ vendor/bin/ combustor install:wildfire
笔记
如果项目中未安装Wildfire
,则此命令将可用。
remove:doctrine
删除 Dotrine 包。
例子
$ vendor/bin/ combustor remove:doctrine
笔记
如果项目中安装了Doctrine
,则该命令将可用。
remove: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
目录是否存在,或者是否可以从app_path
中定义的目录直接访问config
目录。
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
请参阅变更日志以了解最近更改的更多信息。
$ composer test
麻省理工学院许可证 (MIT)。请参阅许可证了解更多信息。