gpt4 book ai didi

gridview - Yii2 GridView 有条件隐藏列

转载 作者:行者123 更新时间:2023-12-03 01:55:26 28 4
gpt4 key购买 nike

我在 Yii2 GridView 小部件中显示一些列,“执行人员名称”是其中之一,但它应该仅在主管登录时显示,而不是在执行人员登录时显示。

当我将可见值硬编码为零时,它不会显示如下:

[
'label' => 'Executive Name',
'attribute' => 'cs.first_name',
'visible' => '0',
],

但我想有条件地显示它,如下所示:

[
'label' => 'Executive Name',
'attribute' => 'cs.first_name',
'visible' => function ($data) {
if ($data->hc_customersupport->is_supervisor) {
return '1'; // or return true;
} else {
return '0'; // or return false;
}
},
],

请告知这种方法是否正确。

最佳答案

yii\grid\DataColumn 是从 yii\grid\Column 扩展而来的,其中 visible属性(property)。正如您从文档中看到的,它只接受 bool 值,但是当然您可以通过传递返回 bool 值的表达式来动态计算这些值。 RBAC 示例:

use Yii;

...

'visible' => Yii::$app->user->can('supervisor'),

传递 callable 是不允许的,并且没有任何意义。从逻辑上考虑一下 - 为什么整个列的可见性依赖于具体行(模型)?

P.S. 您应该返回 bool 值,而不是整数或字符串。您的表达也可以简化为:

return $data->hc_customersupport->is_supervisor;

但是 is_supervisor 检查绝对是错误的,不应该这样调用(通过模型)。最好改用 RBAC。

关于gridview - Yii2 GridView 有条件隐藏列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32196111/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com