2017-02-28 1 views
0

のモデル規則の継承:Yii2:私はこれを取得する別の方法があるかどうか知らない行動

UserModel.php

public function behaviors() 
    { 
     //I use array_merge() because UserModel extends from another custom model. 
     return 
      array_merge(
       parent::behaviors(), 
       [ 
        MyBehavior::className(), 
       ] 
      ); 
    } 

public function rules() 
    { 
     return 
      array_merge(
       MyBehavior::theRules(), 
       [ 
        list of UserModel rules... 
       ] 
      ); 

MyBehavior.php

class MyBehavior extends Behavior 
{ 

public static function theRules() 
    { 
    return [ 
      [['attr'],'file'] 
]; 
    } 
    .... 
} 

私の質問は次のとおりです。 UserModel :: rules()でMyBehavior :: theRules()を静的に呼び出すことなく、MyBehaviorからUserModelへのルールを継承する別の方法はありますか?抽出

+1

あなたは、httpでの行動を取り付け、使用についてのドキュメントを見たことがあります。 com/doc-2.0/guide-concept-behaviors.html? –

+0

はい@ igor、ありがとう! – nacesprin

答えて

1

UserModel.php

use yii\helpers\ArrayHelper; 

public function behaviors() 
    { 
     //I use array_merge() because UserModel extends from another custom model. 
     return ArrayHelper::merge(
       parent::behaviors(), 
       [ 
        MyBehavior::className(), 
       ] 
      ); 
    } 

public function rules() 
    { 
     return 
       [ 
        list of UserModel rules... 
       ] 
      ; 
} 

://www.yiiframework:https://github.com/yiisoft/yii2/issues/3772#issuecomment-45715176

MyBehavior.php

use \yii\validators\Validator; 
public function attach($owner){ 
     parent::attach($owner); 

     $owner->validators[] = Validator::createValidator('file', $this->owner, '_anexo' 
      ,['skipOnEmpty' => true, 'extensions' => 'png, jpg, jpeg', 'maxFiles' => 5, 'maxSize'=>2000000] 
     ); 
    } 
関連する問題