如何在 yii2 的索引页面上显示该用户创建的记录?



我正在使用yii2 basic和实现的RBAC。

我有两个角色管理员和现场官员,并创建了权限和规则并分配了用户。现在,当管理员登录时,在索引页面上,他应该能够在网格中看到所有记录以及他在网格中创建的记录。

而当现场官员登录时,他应该只能在索引页中看到他创建的记录。

如何做到这一点?

您需要将用户的 id 预加载到搜索模型中。如果安全性是一个问题(即:您不希望其他用户无论如何都能够绕过它(,那么您需要检测用户的 ID 是否已传递给查询,并将其强制回给您想要的用户(即:登录的用户(。在大多数情况下,您将需要额外的安全性,并且应该。

UserPlan替换为您的任何型号。由于您没有发布代码,因此我不知道它是什么:)

之前:原始索引示例(由 Gii 生成(:

public function actionIndex()
{
$searchModel = new UserPlanSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}

之后:锁定到当前登录的用户:

public function actionIndex()
{
$searchModel = new UserPlanSearch();
$searchModel->user_id = Yii::$app->user->id;
// override (so users can't bypass)
$queryParams = Yii::$app->request->queryParams;
if ( isset($queryParams['UserPlan']['user_id']) ) {
$queryParams['UserPlan']['user_id'] = Yii::$app->user->id;
}
$dataProvider = $searchModel->search($queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}

此外,你应该在发布到StackOverflow时发布代码,除非你想要一堆反对票。只是问问题,是违反规则的。他们想看看你到目前为止已经尝试过什么,以及一些代码。

最新更新