2015-11-10 2 views
0

me reste que cette classe je reçois objet en fonction ActionCreate:Yii2: comportement array (fonctionne pas) ou attachBehavior (travail)

use app\components\ModelHelperBehavior; 

class UserController extends Controller{ 

    public function actionCreate(){ 

      $model = new User(); 
      $model->attachBehavior(HelperBehavior::className()); 
      var_dump($model->getBehaviors()); 
     } 
    } 
} 

Mais si j'utilise cette code- je reçois null

use app\components\ModelHelperBehavior; 

class UserController extends Controller{ 

    public function behaviors(){ 
     return [ 
      HelperBehavior::className(), 
      ], 
     ]; 
    } 
    public function actionCreate(){ 

      $model = new User(); 
      var_dump($model->getBehaviors()); 
     } 
    } 
} 

Ma question est: comment puis-je attacher un comportement à UserInfo dans le second exemple de code en utilisant un tableau?

P.S. Mon code de comportement est:

class HelperBehavior extends Behavior{ 

    public function getGigit() { 
      return 111; 
    } 
} 
+0

Mis à jour. Ici, j'ai trouvé l'exemple "Vous pouvez également attacher des comportements à travers des configurations comme celle-ci:" mais comment puis-je l'écrire dans mon exemple? - – user5538720

Répondre

1

vous devez ajouter:

public function behaviors() 
{ 
    return [ 
     HelperBehavior::className(), 
    ]; 
} 

à UserInfo classe, pas contrôleur.

+0

Ok, j'ai changé UserInfo() en User() mais le même problème – user5538720

+1

Comment changer le nom de la classe pour résoudre le problème? J'ai écrit que vous avez la méthode 'behaviors()' dans la mauvaise classe. Non, ce nom de classe est faux ... –

+0

Non, regardez l'exemple - le comportement est maintenant dans la bonne classe (après le changement de nom): le tableau de comportement est dans la classe User. Ici http://www.yiiframework.com/doc-2.0/guide-concept-behaviors.html j'ai trouvé exaple "Vous pouvez également attacher des comportements à travers des configurations comme les suivantes:" mais comment puis-je l'écrire dans mon exemple? – user5538720