Yii2:根据权限隐藏搜索结果

Yii2:根据权限隐藏搜索结果,yii2,rbac,Yii2,Rbac,在我的表格中,我有: PRODUCT id_product name status 其中状态采用以下值: 1 (Active) 2 (Inactive) 3 (Archived) 在产品索引视图中,我希望用户根据权限查看某些状态。例如: 管理员查看状态为1、2和3的记录 主持人意见:1和2 用户视图:1 我该怎么做?我有什么选择?您可以在搜索模型中添加条件(我猜您有一个ProductSearch.php文件),以便根据用户角色过滤结果 我从未使用过Yii的RBAC,但我认为您有一种获取用

在我的表格中,我有:

PRODUCT
id_product
name
status
其中状态采用以下值:

1 (Active)
2 (Inactive)
3 (Archived)
在产品索引视图中,我希望用户根据权限查看某些状态。例如:

  • 管理员查看状态为1、2和3的记录
  • 主持人意见:1和2
  • 用户视图:1

我该怎么做?我有什么选择?

您可以在搜索模型中添加条件(我猜您有一个ProductSearch.php文件),以便根据用户角色过滤结果

我从未使用过Yii的RBAC,但我认为您有一种获取用户角色的方法,如下所述:

因此,在您的搜索模型中,我会在网格过滤条件之后添加一个或多个条件:

if($isUser) {     
    $query->andFilterWhere([
        'status' => 1,
    ]);
}
elseif($isModerator) {
    $query->andFilterWhere(['or',
       ['status' => 1],
       ['status' => 2]
    ]);
}

如果您需要,我可以给您一个更详细的答案。

您可以在搜索模型中添加条件(我猜您有一个ProductSearch.php文件),以便根据用户角色过滤结果

我从未使用过Yii的RBAC,但我认为您有一种获取用户角色的方法,如下所述:

因此,在您的搜索模型中,我会在网格过滤条件之后添加一个或多个条件:

if($isUser) {     
    $query->andFilterWhere([
        'status' => 1,
    ]);
}
elseif($isModerator) {
    $query->andFilterWhere(['or',
       ['status' => 1],
       ['status' => 2]
    ]);
}

如果您需要,我可以给您一个更详细的答案。

显然,请注意$isUser和$isModerator是假的变量,可以让您理解其含义。您可以在获得角色值后检查它。显然,请注意$isUser和$isModerator是假的变量,以使您理解其含义。您可以在获得角色值后检查它。