2013-07-22 151 views
0

我在accessRules()函數中使用下面的代碼來匹配登錄用戶的角色。該角色在使用Yii ::使用未定義的常量

$this->setState('role', $record->role); 

的代碼在accessRules()函數的認證過程中設置爲:

$role=""; 
    if(Yii::app()->user->getId()===null) 
    { 
      $role="guest"; 
    } 
    else 
    { 
     $role=Yii::app()->user->role; 
    } 

    return array(
     array('allow', 'actions'=>array('index','view'), 
      'users'=>array('*'), 
     ), 
    ); 

此代碼工作正常我本地機器上,但是當我把它上傳到服務器它給我Use of undefined constant guest - assumed 'guest'錯誤。 這是什麼原因以及如何解決這個問題。謝謝!!!

+0

這很可能是你錯過了一個變量值的''''或'''。你顯示的代碼與你的問題看起來並不相關。實際上,如果你看一下堆棧跟蹤,你應該看到在哪一行錯誤發生 –

+0

它在Yii :: createWebApplication($ config) - > run()提供錯誤; –

+0

看一下完整的堆棧跟蹤錯誤必須顯然發生在使用'guest'的行,PHP通常會告訴你確切地在哪個文件中,在哪一行發生了錯誤,如果它不(這可能很奇怪),也許你可以搜索你的代碼庫的這個詞 –

回答

1
$role=""; 
if(Yii::app()->user->getId()===null) 
{ 
     $role="guest"; 
} 
else 
{ 
    $role=Yii::app()->user->role; 
} 

可以簡化爲:

$role = "guest"; 
if(Yii::app()->user->id != null) { 
    $role = Yii::app()->user->role; 
} 

嘗試,看看是否能解決這個問題爲您服務。

你也可以這樣做:

$role = "guest"; 
if(!Yii::app()->user->isGuest) { 
    $role = Yii::app()->user->role; 
} 

然而,似乎你可能會使用變量$role其他地方,你可能會想看看這些線路正在導致問題來代替。

0

跟着this post並改變授權過程,它的工作。仍然無法弄清楚爲什麼會顯示此警告。