CodeIgniter4のCLIジェネレータのテンプレートをカスタマイズする
この記事は CodeIgniter Advent Calendar 2022 - Qiita の10日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。
CLIジェネレータとは?
CodeIgniter4 にはコマンドラインからアプリの各種ファイルを生成するCLIジェネレータが付属しています。
spark make:*
コマンドです。
ジェネレータを利用することで、コントローラ、モデル、フィルタ、マイグレーションなどのファイルを作成できます。
モデルファイルの生成
例えば、以下のコマンドでモデルファイルを作成できます。
$ php spark make:model product
app/Models/Product.php
が作成されました。
<?php
namespace App\Models;
use CodeIgniter\Model;
class Product extends Model
{
protected $DBGroup = 'default';
protected $table = 'products';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $insertID = 0;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = [];
// Dates
protected $useTimestamps = false;
protected $dateFormat = 'datetime';
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';
// Validation
protected $validationRules = [];
protected $validationMessages = [];
protected $skipValidation = false;
protected $cleanValidationRules = true;
// Callbacks
protected $allowCallbacks = true;
protected $beforeInsert = [];
protected $afterInsert = [];
protected $beforeUpdate = [];
protected $afterUpdate = [];
protected $beforeFind = [];
protected $afterFind = [];
protected $beforeDelete = [];
protected $afterDelete = [];
}
しかし、全てのプロパティがオーバーライドされており長いです。
モデルのテンプレートのカスタマイズ
実は、ジェネレータのテンプレートは簡単にカスタマイズできます。
モデルのテンプレートは、
vendor/codeigniter4/codeigniter4/system/Commands/Generators/Views/model.tpl.php
にあります。これを app/Commands/Generators/Views/
フォルダを作成し、そこにコピーします。
コピーした app/Commands/Generators/Views/model.tpl.php
を好きなように変更します。
次に、app/Config/Generators.php
にジェネレータの設定クラスがあるので変更します。
--- a/app/Config/Generators.php
+++ b/app/Config/Generators.php
@@ -32,7 +32,7 @@ class Generators extends BaseConfig
'make:entity' => 'CodeIgniter\Commands\Generators\Views\entity.tpl.php',
'make:filter' => 'CodeIgniter\Commands\Generators\Views\filter.tpl.php',
'make:migration' => 'CodeIgniter\Commands\Generators\Views\migration.tpl.php',
- 'make:model' => 'CodeIgniter\Commands\Generators\Views\model.tpl.php',
+ 'make:model' => 'App\Commands\Generators\Views\model.tpl.php',
'make:seeder' => 'CodeIgniter\Commands\Generators\Views\seeder.tpl.php',
'make:validation' => 'CodeIgniter\Commands\Generators\Views\validation.tpl.php',
'session:migration' => 'CodeIgniter\Commands\Generators\Views\migration.tpl.php',
これでOKです。
再度、モデルを生成してみましょう。
$ php spark make:model product --force
今度は以下が作成されました。
<?php
namespace App\Models;
use CodeIgniter\Model;
class Product extends Model
{
protected $table = 'products';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'array';
protected $useSoftDeletes = false;
protected $allowedFields = [];
// Dates
protected $useTimestamps = false;
protected $dateFormat = 'datetime';
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';
}
まとめ
- CodeIgniter4にはアプリのファイルを作成するCLIジェネレータが付属しています。
- 生成されるファイルのテンプレートは簡単にカスタマイズできます。
この記事は CodeIgniter Advent Calendar 2022 - Qiita の10日目です。まだ、空きがありますので、興味のある方は気軽に参加してください。
関連
参考
Date: 2022/12/10