正在尝试获取Yii2上非对象的属性

正在尝试获取Yii2上非对象的属性,yii,yii2,propertyinfo,Yii,Yii2,Propertyinfo,我想根据我使用的用户组id显示数据 Yii::$app->user->identity->group_id 在我的ModelSearch中,如下所示: $query->andFilterWhere([ ...... 'group_id' => Yii::$app->user->identity->group_id, 'created_date' => $this->dreated_dat

我想根据我使用的用户组id显示数据

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\u id'=>Yii::$app->user->identity->group\u id,

如果我没有任何会话,如何在打开页面时将页面重定向到登录页面。多谢各位

编辑

我补充说

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

在我的控制器中访问ModelSearch的每个操作中。

您可以为此操作添加访问控制筛选器

在控制器中添加:

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

可能是重复的,我已经试过了。但它不起作用,并且在尝试获取非对象的属性时仍然会出错。所以,您做了一些错误的事情,因为如果您正确标识了此错误,则意味着来宾用户可以访问ModelSearch。它已经起作用了,我必须在controller中的每个操作中直接添加重定向。谢谢。我有AccessControl和“如果(Yii::$app->user->isGuest){return$this->redirect(Yii::$app->user->loginUrl);}”在preaction中,代码进入if内部,但不重定向,我得到相同的错误。。。