2017-06-22 64 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