以下是我的模型代码的一部分:
public function fields()
{
//print_r(Yii::$app->controller->action->uniqueId);
if(Yii::$app->controller->action->uniqueId == 'user/self' or
Yii::$app->controller->action->uniqueId == 'user/confirm' or
Yii::$app->controller->action->uniqueId == 'user/create'){
if( $this->status == self::STATUS_ACTIVE)
return [ .......
Yii :: $ app的行返回“试图获取无对象的属性”。是的,Yii :: $ app返回NULL而不是它的对象。怎么会发生这种情况?我应该附上一些设置吗?
UPD: 栈跟踪
"stack-trace": [
"#0 /var/www/millennials.kz/public_html/models/User.php(218): yii\\base\\ErrorHandler->handleError(8, 'Trying to get p...', '/var/www/millen...', 218, Array)",
"#1 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/base/ArrayableTrait.php(143): app\\models\\User->fields()",
"#2 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/base/ArrayableTrait.php(119): yii\\base\\Model->resolveFields(Array, Array)",
"#3 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/helpers/BaseJson.php(145): yii\\base\\Model->toArray()",
"#4 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/helpers/BaseJson.php(164): yii\\helpers\\BaseJson::processData(Object(app\\models\\User), Array, '57c87a13d611d6....')",
"#5 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/helpers/BaseJson.php(55): yii\\helpers\\BaseJson::processData(Array, Array, '57c87a13d611d6....')",
"#6 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/web/JsonResponseFormatter.php(89): yii\\helpers\\BaseJson::encode(Array, 320)",
"#7 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/web/JsonResponseFormatter.php(73): yii\\web\\JsonResponseFormatter->formatJson(Object(yii\\web\\Response))",
"#8 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/web/Response.php(947): yii\\web\\JsonResponseFormatter->format(Object(yii\\web\\Response))",
"#9 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/web/Response.php(311): yii\\web\\Response->prepare()",
"#10 /var/www/millennials.kz/public_html/vendor/yiisoft/yii2/base/Application.php(381): yii\\web\\Response->send()",
"#11 /var/www/millennials.kz/public_html/web/index.php(12): yii\\base\\Application->run()",
"#12 {main}"
]
答案 0 :(得分:0)
你应该这样做:
public function fields() {
$fields = parent::fields();
$fields["some"] = function () {
if (Yii::$app->controller->action->uniqueId == 'user/self' or
Yii::$app->controller->action->uniqueId == 'user/confirm' or
Yii::$app->controller->action->uniqueId == 'user/create') {
if ($this->status == self::STATUS_ACTIVE) {
return "test";
} else {
return "zzz";
}
} else {
return "tttt";
}
};
return $fields;
}