paftest / yii2-giiant
Yii 2 框架的 Gii CRUD 生成器
Requires
This package is not auto-updated.
Last update: 2024-09-24 03:18:19 UTC
README
- CRUD 控制器动作的 trait
- 关系提供者按下拉字段中显示的名称排序
- 自定义 dbType yii2image 和 yii2file 以自动生成图像和文件模型
- CRUD 文件提供者用于处理图像上传
yii2-giiant
为 Gii(Yii2 框架的代码生成器)扩展模型和 CRUD
项目处于开发阶段!
这是什么?
Giiant 提供了具有关系支持和复杂 UI 的模型和 CRUD 生成模板。主要项目目标是将有多个特性和学习成果从 gtc、giix、awecrud 等转移到单一解决方案中。
安装
安装此扩展的首选方式是通过 composer。
composer.phar require schmunk42/yii2-giiant:"*"
如果启用了 Gii 模块,生成器将在应用程序引导过程中自动注册
使用方法
访问您的应用程序的 Gii(例如 index.php?r=gii
),然后在主菜单屏幕上选择一个生成器。
有关基本使用说明,请参阅Yii2 指南中的 Gii 部分。
命令行批次
您可以使用内置的批处理命令运行基础模型和 CRUD 生成批处理
./yii giiant-batch --tables=profile,social_account,user,token
它将处理给定的表,有关更多详细信息,请参阅 ./yii help giiant-batch
。
特性
模型生成器
- 生成单独的模型类以进行自定义和基模型类以进行重新生成
- 可以移除模型类名称中的表前缀(不绑定到数据库连接设置)
CRUD 生成器
- 可以自定义模型、视图和控制器的位置以使用子文件夹
- 水平和垂直表单布局
- 操作按钮类自定义
- 使用提供者队列对输入、属性、列和关系进行自定义
- 回调提供者通过依赖注入注入任何类型的代码以用于输入、属性和列
提供者
- CallbackProvider 通用提供者,通过高度灵活的回调函数修改任何输入、属性或列
- RelationProvider 渲染关系代码(例如链接、下拉菜单)
- EditorProvider 渲染类似
Ckeditor
的 RTE 作为输入小部件 - DateTimeProvider 渲染日期输入
使用提供者进行自定义
在许多情况下,您可能希望用自定义版本替换项目中的某些输入。此类用例的示例包括编辑器、文件上传或选择器、具有模态屏幕的复杂输入小部件、通过 AJAX 获取数据等。
使用 Giiant 提供者,您可以创建一个实例队列,这些实例可以提供根据更复杂的规则提供的自定义代码。查看一些现有的 giiant 提供者。
配置提供者,在表单中将此添加到您的提供者列表中
\schmunk42\giiant\crud\providers\EditorProvider,
\schmunk42\giiant\crud\providers\SelectProvider,
并配置提供者的设置,通过依赖注入添加设置到您的应用程序配置中,例如在 console/config/bootstrap.php
\Yii::$container->set(
'schmunk42\giiant\crud\providers\EditorProvider',
[
'columnNames' => ['description']
]
);
这将为名为 description
的每个列渲染 Ckeditor 小部件。
<?= $form->field($model, 'description')->widget(
\dosamigos\ckeditor\CKEditor::className(),
[
'options' => ['rows' => 6],
'preset' => 'basic'
]) ?>
通用 CallbackProvider
通过 DI 容器进行配置
\Yii::$container->set(
'schmunk42\giiant\crud\providers\CallbackProvider',
[
'activeFields' => [
/**
* Generate a checkbox for specific column (model attribute)
*/
'common\models\Foo.isAvailable' => function ($attribute, $generator) {
$data = \yii\helpers\VarDumper::export([0 => 'Nein', 1 => 'Ja']);
return <<<INPUT
\$form->field(\$model, '{$attribute}')->checkbox({$data});
INPUT;
},
],
'columnFormats' => [
/**
* generate custom HTML in column
*/
'common\models\Foo.html' => function ($attribute, $generator) {
return <<<FORMAT
[
'format' => 'html',
'label'=>'FOOFOO',
'attribute' => 'item_id',
'value'=> function(\$model){
return \yii\helpers\Html::a(\$model->bar,['/crud/item/view', 'id' => \$model->link_id]);
}
]
FORMAT;
},
/**
* hide all text fields in grid
*/
'.+' => function ($column, $model) {
if ($column->dbType == 'text') {
return false;
}
},
/**
* hide system fields in grid
*/
'created_at$|updated_at$' => function () {
return false;
},
]
]
);
附加信息
有关如何使用 MySQL Workbench 进行模型更新和迁移的详细说明,请参阅此处。
特别感谢 motin、thyseus、uldisn 和 rcoelho 的工作、灵感和反馈。