型号:
....
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所以希望有人可以帮助我...
答案 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);
};
});
}
}]);