2017-11-28 17 views
2

저는 Gii를 사용하여 모델을 생성하는 Yii2에서 작업하고 있습니다. 내가 뭘하려고 그들 모두는 foobar 개별 모델의 이름입니다 다음 함수Yii2 Gii 모델 생성기를 사용하여 모델에서 사용자 지정 함수 만들기

public static function getFoobarList() 
{ 
    $models = Foobar::find()->all(); 
    return ArrayHelper::map($models, 'id', 'foobar'); 
} 

있을 것 같은 내 모델을 정의하는 것입니다.

미리 감사드립니다.

답변

2

모든 모델에서이 기능이 필요하므로, 생성 된 모든 모델이 확장되는 ActiveRecord 모델에이 기능을 추가하는 것이 좋습니다. 필요한 기능을 수행하려면 기능을 약간 변경해야합니다.

그냥 액티브 클래스에이를 추가

public static function getModelList() 
{ 
    $models = static::find()->all(); 
    return ArrayHelper::map($models, 'id', static::tableName()); 
} 

어떤 모델이 사용하기는 foobar 모두 당신이해야합니다 예입니다 : 당신의 모델

Foobar::getModelList(); 
2

할 수 있습니다 create a custom template gii는 수업을 생성하는 데 사용할 수 있습니다. 다음과 같은

뭔가, @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()); 
} 

당신이 어떤 모델을 찾는 방법을 추가 할 것, 예를 들어,에 저장된 파일 /vendor/yiisoft/yii2-gii/generators/model/default/model.php 새 파일의 사본의 상단에 추가 새 템플릿으로 생성되었습니다. '코드 템플릿'메뉴에서, 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 
       ] 
      ] 
     ], 
    ]; 
} 

처럼 구성 무언가에

.