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)。請參閱許可證以了解更多資訊。