public $cssCLasses = [
Zakaz::STATUS_NEW => 'primary',
Zakaz::STATUS_WORK => 'default',
Zakaz::STATUS_EXECUTE => 'success',
Zakaz::STATUS_APOTED => 'warning',
Zakaz::STATUS_DISAIN => 'info',
Zakaz::STATUS_REJECT_DISAIN => 'danger',
Zakaz::STATUS_MASTER => 'info',
Zakaz::STATUS_AUTSORS => 'link',
];
'attribute' => 'status',
'class' => SetColumn::className(),
'format' => 'raw',
'value' => 'statusName',
'cssCLasses' => [
Zakaz::STATUS_NEW => 'Новый',
Zakaz::STATUS_WORK => 'В работе',
Zakaz::STATUS_EXECUTE => 'Исполнен',
Zakaz::STATUS_APOTED => 'Принят',
Zakaz::STATUS_DISAIN => 'Дизайнер',
Zakaz::STATUS_REJECT_DISAIN => 'Отклонен дизайнером',
Zakaz::STATUS_MASTER => 'Мастер',
Zakaz::STATUS_AUTSORS => 'Аутсорс',
],
<?php
namespace yii\grid;
use yii\grid\DataColumn;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
class SetColumn extends DataColumn
{
/**
* @var callable
*/
public $name;
/**
* Array of status classes
* ```
* [
* User::STATUS_ACTIVE => 'success',
* User::STATUS_WAIT => 'warning',
* User::STATUS_BLOCKED => 'default',
* ]
* ```
* @var array
*/
public $cssCLasses = [];
protected function renderDataCellContent($model, $key, $index)
{
$value = $this->getDataCellValue($model, $key, $index);
$name = $this->getStatusName($model, $key, $index, $value);
$class = ArrayHelper::getValue($this->cssCLasses, $value, 'default');
$html = Html::tag('span', Html::encode($name), ['class' => 'label label-' . $class]);
return $value === null ? $this->grid->emptyCell : $html;
}
/**
* @param mixed $model
* @param mixed $key
* @param integer $index
* @param mixed $value
* @return string
*/
private function getStatusName($model, $key, $index, $value)
{
if ($this->name !== null) {
if (is_string($this->name)) {
$name = ArrayHelper::getValue($model, $this->name);
} else {
$name = call_user_func($this->name, $model, $key, $index, $this);
}
} else {
$name = null;
}
return $name === null ? $value : $name;
}
}
function ($model, $key, $index, $column){
$value = $model->{$column->attribute};
switch ($value) {
case Zakaz::STATUS_NEW:
$class = 'primary';
break;
case Zakaz::STATUS_WORK:
$class = 'default';
break;
case Zakaz::STATUS_EXECUTE:
$class = 'success';
break;
case Zakaz::STATUS_APOTED:
$class = 'warning';
break;
case Zakaz::STATUS_DISAIN:
$class = 'info';
break;
case Zakaz::STATUS_REJECT_DISAIN:
$class = 'danger';
break;
case Zakaz::STATUS_MASTER:
$class = 'info';
break;
case Zakaz::STATUS_AUTSORS:
$class = 'link';
break;
};
$html = Html::tag('span', Html::encode($model->getStatusName()), ['class' => 'label label-'.$class]);
return $value === null ? $column->grid->emptyCell : $html;
},
const STATUS_NEW = 0;
const STATUS_WORK = 1;
const STATUS_EXECUTE = 2;
const STATUS_APOTED = 3;
const STATUS_DISAIN = 4;
const STATUS_REJECT_DISAIN = 5;
const STATUS_MASTER = 6;
const STATUS_AUTSORS = 7;
const STATUS_CLOSE = 8;
public static function getStatusArray(){
return [
self::STATUS_NEW => 'Новый',
self::STATUS_WORK => 'В работе',
self::STATUS_EXECUTE => 'Исполнен',
self::STATUS_APOTED => 'Принят',
self::STATUS_DISAIN => 'Дизайнер',
self::STATUS_REJECT_DISAIN => 'Отклонен дизайнером',
self::STATUS_MASTER => 'Мастер',
self::STATUS_AUTSORS => 'Аутсорс',
self::STATUS_CLOSE => 'Закрыт',
];
}
public function getStatusName(){
return ArrayHelper::getValue(self::getStatusArray(), $this->status);
}