veyselsahin/yii2-giix

为 Yii 2 框架扩展的 Gii

安装: 555

依赖项: 0

建议者: 0

安全: 0

星标: 10

关注者: 5

分支: 5

开放问题: 1

类型:yii2-extension

1.4 2019-03-02 13:38 UTC

This package is auto-updated.

Last update: 2024-09-29 04:48:40 UTC


README

为 Gii 生成器扩展模型和 CRUD,Gii 是 Yii 2 框架的代码生成器

项目处于开发阶段!

这是什么?

Yii2-Giix 提供了具有关系支持和复杂界面的模型和 CRUD 生成模板。主要目标是把从 yii2-giiant、gtc、giix、awecrud 等项目中提取的许多功能和经验整合到一个解决方案中。

安装

通过 composer 安装此扩展是首选方式。

composer.phar require veyselsahin/yii2-giix:"*"

如果启用了 Gii 模块,生成器将在应用程序启动过程中自动注册

使用方法

访问应用程序的 Gii(例如,index.php?r=gii),然后在主菜单屏幕中选择一个生成器。

有关基本使用说明,请参阅 Yii2 指南中的 Gii 部分

命令行批量处理

您可以使用内置的批量命令运行基础模型和 CRUD 生成的批处理

./yii giix-batch --tables=profile,social_account,user,token

它将处理指定的表,有关更多详细信息,请参阅 ./yii help giix-batch

功能

模型生成器

  • 生成单独的模型类进行自定义和基模型类进行重新生成
  • 可以移除模型类名称中的表前缀(不依赖于数据库连接设置)

CRUD 生成器

  • 可以自定义模型、视图和控制器位置以使用子文件夹
  • 水平和垂直表单布局
  • 自定义操作按钮类
  • 通过提供者队列自定义输入、属性、列和关系
  • 回调提供者通过依赖注入注入任何类型的代码到输入、属性和列中

提供者

  • CallbackProvider 通用提供者,可以通过高度灵活的回调函数修改任何输入、属性或列
  • RelationProvider 渲染关系代码(例如,链接、下拉列表)
  • EditorProvider 渲染富文本编辑器,如 Ckeditor 作为输入小部件
  • DateTimeProvider 渲染日期输入

使用自定义生成器和模型、CRUD 模板


    $config['modules']['gii'] = [
            'class'      => 'yii\gii\Module',
            'allowedIPs' => ['127.0.0.1'],
            'generators' => [
                // generator name
                'rb-model' => [
                    //generator class
                    'class'     => 'veyselsahin\giix\model\Generator',
                    //setting for out templates
                    'templates' => [
                        // template name => path to template
                        'rbModel' =>
                            '@app/giiTemplates/model/default',
    
                    ]
                ]
            ],
        ];
    

通过提供者进行自定义

在许多情况下,您可能想要替换项目中的某些输入为自定义版本。此类用例的示例包括编辑器、文件上传或选择器、具有模态屏幕的复杂输入小部件、通过 AJAX 获取数据等。

使用 Yii2-Giix 提供者,您可以创建一个实例队列,这些实例可能根据更复杂的规则提供自定义代码。请查看一些现有的 giix 提供者

配置提供者,在以下表单中将此添加到您的提供者列表中

\veyselsahin\giix\crud\providers\EditorProvider,
\veyselsahin\giix\crud\providers\SelectProvider,

并配置提供者的设置,通过依赖注入添加设置到您的应用程序配置中,例如在 console/config/bootstrap.php

\Yii::$container->set(
    'veyselsahin\giix\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(
    'veyselsahin\giix\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 进行模型更新和迁移的详细说明,请参阅 此处

链接

php yii.php giix-batch --modelDb=cafees --modelBaseClass=common\models\VysModel --modelNamespace=backend\models --tables=gruplar,sinav,sinav_sonuc

php yii.php giix-batch --modelDb=cafees --modelBaseClass=common\models\VysModel --modelNamespace=backend\models