2017-04-17 15 views
0

モデル:Yii2 - 私は動作を設定するにはどうすればよいafterFind()

.... 

public $yourWay; 

.... 
public function afterFind(){ 

    parent::afterFind(); 

    // echo $this->yourWay (Nothing display) 

    //something like: 
     switch($this->yourWay){ 
      //Do something 
      case "abc": break; 
      //Do something 
      case "cde": break; 
     } 
} 

コントローラー:

$model = new Model(); 

$model->yourWay = 'oneway'; 

$dt = $model::find()->one(); 

私が使用$model->scenario = "abc"echo $this->scenarioを試してみましたが、それは働いていません。

は私が... Yii2がそう望んで誰かが私を助けることができる新たなんだ

答えて

1

モデル$modelあなたが上find()を呼び出しているではありません間違っているようです。これは、データベースデータによってのみ設定される新しいオブジェクトです。静的変数を使用して何かをafterFind()に渡す必要があります。静的変数の性質を念頭に置いて、検索が終了したらnullに設定して、後の検索に影響を与えないようにします。

モデル:

... 
public static $yourWay; 
... 
public function afterFind(){ 

    parent::afterFind(); 

    switch(self::$yourWay){ 
     case "abc": 
      break; 

     case "cde": 
      break; 
    } 
} 

コントローラー:

$model = new Model(); 

$model::$yourWay = 'oneway'; 

$dt = $model::find()->one(); 

$model::$yourWay = null; 
0

あなたのスイッチは、あなたがすべきafterFind()

switch($this->yourWay){ 

     case "abc": 
     //Do something 
     .... 
     break; 

     case "cde": 
     //Do something 
     ..... 
     break; 
    } 
関連する問題