Yii2 - 我如何设置afterFind()之后的行为

时间:2017-04-17 12:02:16

标签: php yii yii2

型号:

....

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所以希望有人可以帮助我...

2 个答案:

答案 0 :(得分:2)

afterFind()中的模型不是您$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;

答案 1 :(得分:0)

你的开关似乎错了,你应该

app.directive('authenticatedSrc', ['authenticatedHttp', function (authenticatedHttp) {
  var directive = {
      link: link,
      restrict: 'A'
  };
  return directive;
  function link(scope, element, attrs) {
    var requestConfig = {
      cache: 'false',
      responseType: 'blob'
    };
    authenticatedHttp.get(attrs.authenticatedSrc, requestConfig).then(function(response) {
      var reader = new window.FileReader();
      reader.readAsDataURL(response.data);
      reader.onloadend = function() {
        attrs.$set('src', reader.result);
      };
    });
  }
}]);