2017-02-28 46 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'] 
]; 
    } 
    .... 
} 

我的问题是:是否有任何其他方式继承从MyBehavior规则UserModel没有使用静态调用UserModel :: rules()上的MyBehavior :: theRules()?

+1

你有没有看到有关如何安装和使用HTTP行为的文档://www.yiiframework。 COM/DOC-2.0 /引导概念-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... 
       ] 
      ; 
} 

摘自: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] 
     ); 
    }