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