Php Yii::$app在'型中不可用;s字段()

Php Yii::$app在'型中不可用;s字段(),php,yii,Php,Yii,以下是我的模型的部分代码: public function fields() { //print_r(Yii::$app->controller->action->uniqueId); if(Yii::$app->controller->action->uniqueId == 'user/self' or Yii::$app->controller->action->uniqueId ==

以下是我的模型的部分代码:

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 return的行“尝试获取none对象的属性”。是的,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}"
  ]

你应该这样做:

  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;
}

你使用名称空间吗?e、 g.使用Yii@KostasMitsarakis是的,我有,就在上面。模型的名称空间通常为-namespace app\models@KostasMitsarakis还有一点我没有提到:这段代码在不同的服务器上运行,然后在2个月后我更换了服务器,几天前部署到了新的服务器上(centos 7,digitalocean),总的来说,除了Yii:$appVery奇怪的行为之外,应用程序似乎正常工作。这一定是一个路径问题。尝试添加斜杠。e、 g:\Yii::$app@KostasMitsarakis同样,想在函数字段中看到堆栈跟踪吗?你应该使用函数回调。详细地说,你应该看到yii framework sourec代码。请给我看你的代码详细信息。也许我可以解决它。没关系,显然问题出在“yii::$app->controller->action->uniqueId”这个调用中。我认为有两种方法:1)以某种方式改变Yii的路径,因为它在重新定位后被破坏2)检查Yii类是否存在。亲爱的@yage10548,我怎样才能检查Yii::$app的工作?也许把文件翻三遍,看看有没有。注:在模型的顶部我有“使用Yii