Yii2使用Gii模型生成器在模型中创建自定义函数

Yii2使用Gii模型生成器在模型中创建自定义函数,yii2,gii,Yii2,Gii,我正在使用Gii开发Yii2以生成模型。我想做的是定制我的模型,使它们都具有以下功能 public static function getFoobarList() { $models = Foobar::find()->all(); return ArrayHelper::map($models, 'id', 'foobar'); } 其中,Foobar是各个模型的名称 提前感谢。由于您希望在所有模型中都使用此功能,另一个解决方案是在ActiveRecord模型中添加此

我正在使用Gii开发Yii2以生成模型。我想做的是定制我的模型,使它们都具有以下功能

public static function getFoobarList() 
{
    $models = Foobar::find()->all();
    return ArrayHelper::map($models, 'id', 'foobar');
}
其中,Foobar是各个模型的名称


提前感谢。

由于您希望在所有模型中都使用此功能,另一个解决方案是在ActiveRecord模型中添加此功能,所有生成的模型都将从中扩展。您只需稍微更改功能即可执行所需的功能

只需将其添加到ActiveRecord类:

public static function getModelList() 
{
    $models = static::find()->all();
    return ArrayHelper::map($models, 'id', static::tableName());
}
要将其用于任何模型,您只需执行以下操作:

Foobar::getModelList();
你可以为你的模型,gii可以用来生成你的类

类似下面的内容,添加到文件
/vendor/yiisoft/yii2 gii/generators/model/default/model.php的副本顶部,以及存储在中的新文件,例如
@app/myTemplates/model/default

/**
 * your doc string
 */
 public static function get<?php echo $className; ?>List()
 {
    $models = static::find()->all();
    return ArrayHelper::map($models, 'id', static::tableName());
 }
将允许您在使用gii时从“代码模板”菜单中选择自定义模板

// config/web.php for basic app
// ...
if (YII_ENV_DEV) {    
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',      
        'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'],  
        'generators' => [ //here
            'model' => [ // generator name
                'class' => 'yii\gii\generators\model\Generator', // generator class
                'templates' => [ //setting for out templates
                    'myModel' => '@app/myTemplates/model/default', // template name => path to template
                ]
            ]
        ],
    ];
}