2017-06-22 35 views
0

我想基於用戶的組ID,這是我使用試圖讓Yii2

Yii::$app->user->identity->group_id 

在我ModelSearch這樣的顯示數據非對象的屬性:

$query->andFilterWhere([ 
     ...... 
     'group_id' => Yii::$app->user->identity->group_id, 
     'created_date' => $this->dreated_date, 
    ]); 

它的工作原理當我有會話的應用程序,但是當我沒有會話頁面顯示錯誤:

Trying to get property of non-object 

對於'group_id' => Yii::$app->user->identity->group_id,

如何使頁面重定向到登錄頁面當我打開該頁面時,如果我沒有任何會話。謝謝。

編輯

我在我的位指示每一個動作訪問ModelSearch添加

if (Yii::$app->user->isGuest) { 
      return $this->redirect(Yii::$app->user->loginUrl); 
} 

+0

的可能的複製[什麼是最好的方法重定向在登錄頁面yii2](https://stackoverflow.com/questions/33296156/what-is-best-way-to-redirect-on-login-page-in-yii2) – Nue

回答

0

您可以爲此操作添加訪問控制過濾器。

添加控制器:

public function behaviors() 
{ 
    return [ 
     'access' => [ 
      'class' => \yii\filters\AccessControl::className(), 
      'only' => ['ID of your action here'], 
      'rules' => [ 
       // allow authenticated users 
       [ 
        'allow' => true, 
        'roles' => ['@'], 
       ], 
      ], 
     ], 
    ]; 
} 

或者你也可以直接在動作添加重定向 - 例如將其放置在開頭:

if (Yii::$app->user->isGuest) { 
    return $this->redirect(Yii::$app->user->loginUrl); 
} 
+1

我alredy嘗試他們兩個。但它不起作用,仍然得到錯誤嘗試獲取非對象的屬性。 – adn

+0

所以你做錯了什麼,因爲如果你正確地識別這個錯誤,這意味着ModelSearch被訪客用戶訪問。 – Bizley

+0

它已經工作了,我必須直接在控制器中的每個動作中添加重定向。謝謝。 – adn