2017-02-28 1 views
0

Ich weiß nicht, ob es einen anderen Weg, dies zu erhalten:Yii2: Modellregeln Vererbung auf das Verhalten

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'] 
]; 
    } 
    .... 
} 

Meine Frage ist: Gibt es eine andere Möglichkeit, die Regeln von MyBehavior zu UserModel zu erben, ohne statisches Aufrufen von MyBehavior :: theRules() in UserModel :: rules() zu verwenden?

+1

Haben Sie die Dokumentation über An- und Verwendung von Verhaltensweisen in http gesehen: //www.yiiframework. com/doc-2.0/Leitfaden-Konzept-Verhalten.html? –

+0

Ja @igor, Danke! – nacesprin

Antwort

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... 
       ] 
      ; 
} 

Gewonnen aus: 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] 
     ); 
    } 
Verwandte Themen