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

时间:2017-06-22 00:42:43

标签: 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_date,
    ]);

当我在应用程序中有会话时,它有效,但是当我没有会话时,页面显示错误:

Trying to get property of non-object

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

如果我没有任何会话,当我打开该页面时如何使页面重定向到登录页面。谢谢。

修改

我添加了

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

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

1 个答案:

答案 0 :(得分:0)

您可以为此操作添加访问控制过滤器。

添加控制器:

$(window).scroll(function() {
  var marginvariant = $(window).scrollTop() * (($('#left').height() / $('#right').height()) * 0.16);
  marginvariant = Math.round(marginvariant);
  var $left = $('#left'); //record the elem so you don't crawl the DOM everytime
  var leftbottom = $('#left').height() - $left.position().top - marginvariant;
  var $right = $('#right'); //record the elem so you don't crawl the DOM everytime
  var rightbottom = $('#right').height() - $right.position().top;
  var bottomdif = leftbottom - rightbottom;
  if (bottomdif >= 0) {
    $('#left').css('margin-top', -marginvariant);
  }
});

或者您可以直接在操作中添加重定向 - 例如将其放在开头:

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