簡體   English   中英

Yii2-如何設置afterFind()的行為

[英]Yii2 - How I can set behavior 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,希望有人能幫助我...

afterFind()中的$model不是您正在調用find()$model 它是僅由數據庫數據填充的新對象。 您必須使用靜態變量將任何內容傳遞給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;

您的開關似乎不對,您應該

   switch($this->yourWay){

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

       case "cde":  
         //Do something
         .....
         break;
    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM