K A*_*ngh 10 gridview yii yii2
我在Yii2 GridView小部件中显示了一些列,'Executive Name'是其中之一,但只有在Supervisor登录时才会显示,而不是在Executive登录时显示.
当我将硬编码显示为零时,它不会显示如下:
[
'label' => 'Executive Name',
'attribute' => 'cs.first_name',
'visible' => '0',
],
Run Code Online (Sandbox Code Playgroud)
但我希望有条件地显示它:
[
'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;
}
},
],
Run Code Online (Sandbox Code Playgroud)
请告诉我这种方法是否正确.
aro*_*hev 16
yii\grid\DataColumn从中延伸yii\grid\Column有可见属性.从文档中可以看出,它只接受布尔值,但当然你可以通过传递一个返回布尔值的表达式来动态计算它们.RBAC示例:
use Yii;
...
'visible' => Yii::$app->user->can('supervisor'),
Run Code Online (Sandbox Code Playgroud)
传递可调用是不允许的,没有任何意义.从逻辑上考虑这一点 - 为什么整列的可见性取决于具体的行(模型)?
PS你应该返回布尔值,而不是整数或字符串.你的表达也可以简化为:
return $data->hc_customersupport->is_supervisor;
Run Code Online (Sandbox Code Playgroud)
但是is_supervisor检查是定义错误的,它不应该被调用(通过模型).最好使用RBAC.
小智 7
这个很好用
[
'label' => 'Executive Name',
'attribute' => 'cs.first_name',
'visible' => 'Condition' ? true : false
],
Run Code Online (Sandbox Code Playgroud)
您可以'Condition'用您的条件替换文本,例如Yii::$app->user->can('supervisor')此参数是否适合您。
| 归档时间: |
|
| 查看次数: |
19564 次 |
| 最近记录: |