You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							26 lines
						
					
					
						
							750 B
						
					
					
				
			
		
		
	
	
							26 lines
						
					
					
						
							750 B
						
					
					
				<?php | 
						|
 | 
						|
namespace backend\widgets\grid; | 
						|
 | 
						|
use core\access\Rbac; | 
						|
use Yii; | 
						|
use yii\grid\DataColumn; | 
						|
use yii\helpers\Html; | 
						|
use yii\rbac\Item; | 
						|
 | 
						|
class RoleColumn extends DataColumn | 
						|
{ | 
						|
    protected function renderDataCellContent($model, $key, $index): string | 
						|
    { | 
						|
        $roles = Yii::$app->authManager->getRolesByUser($model->id); | 
						|
        return $roles === [] ? $this->grid->emptyCell : implode(', ', array_map(function (Item $role) { | 
						|
            return $this->getRoleLabel($role); | 
						|
        }, $roles)); | 
						|
    } | 
						|
 | 
						|
    private function getRoleLabel(Item $role): string | 
						|
    { | 
						|
        $class = $role->name == Rbac::ROLE_USER ? 'primary' : 'danger'; | 
						|
        return Html::tag('span', Html::encode($role->description), ['class' => 'label label-' . $class]); | 
						|
    } | 
						|
} |