В модели
/**
* Константы статуса статьи
*/
public const STATUS_YES = 'yes';
public const STATUS_NO = 'no';
// /**
// * Константа картинки
// */
// public $imageFile;
/**
* Массив статусов с названием и label
* @return array
*/
public static function getStatusArrayLabel()
{
return [
self::STATUS_YES => '<span class="label label-success">'.self::getStatusArray()[self::STATUS_YES].'</span>',
self::STATUS_NO => '<span class="label label-warning">'.self::getStatusArray()[self::STATUS_NO].'</span>',
// self::STATUS_YES => '<span class="label label-success">опубликовано</span>',
// self::STATUS_NO => '<span class="label label-warning">закрыто</span>',
];
}
/**
* Вывод названия статуса, текст+label
* 'value' => $model->statusNameLabel($model->publish_status),
*/
public static function statusNameLabel($status)
{
$states = self::getStatusArrayLabel();
return !empty($states[$status]) ? $states[$status] : $status;
}
/**
* Массив статусов с названием
* @return array
*/
public static function getStatusArray()
{
return [
self::STATUS_YES => 'опубликовано',
self::STATUS_NO => 'закрыто',
];
}
/**
* Вывод названия статуса, только текст
* 'value' => $model->statusName($model->publish_status),
*
*/
public static function statusName($status)
{
$states = self::getStatusArray();
return !empty($states[$status]) ? $states[$status] : $status;
}
в index
[
'attribute' => 'publish_status',
'format' => 'raw',
'value' => function ($model) {
/* @var $model Blog */
return $model->statusNameLabel($model->publish_status);
},
'contentOptions' => ['style'=>'max-width: 120px !important; width: 120px !important;'],
],
можно просто в Grid
[
'attribute' => 'publish_status',
'headerOptions' => ['class' => 'asas'],
'format' => 'html',
'contentOptions' => ['style' => 'text-align:center;'],
'value' => function ($model) {
return ($model->publish_status == Blog::STATUS_YES) ? '<span class="p-2 circle text-light bg-success d-inline-flex align-items-center justify-content-center"><i class="lni lni-checkmark"></i></span>' :
'<span class="p-2 circle text-light bg-primary d-inline-flex align-items-center justify-content-center"><i class="lni lni-close"></i></span>';
},
'filter' => array("10" => "Активный", "0" => "Заблокирован")
],
или
[ | |
'attribute' => 'status', | |
'format' => 'html', | |
'value' => function ($model) { | |
if ($model->status === IActiveStatus::STATUS_ACTIVE) { | |
$class = 'label-success'; | |
} elseif ($model->status === IActiveStatus::STATUS_INACTIVE) { | |
$class = 'label-warning'; | |
} else { | |
$class = 'label-danger'; | |
} | |
return '<span class="label ' . $class . '">' . $model->getStatus() . '</span>'; | |
}, | |
'filter' => Html::activeDropDownList( | |
$searchModel, | |
'status', | |
BlogPost::getStatusList(), | |
['class' => 'form-control', 'prompt' => Module::t('blog', 'PROMPT_STATUS')] | |
) | |
], |
Источник:
Перейти