Gridview Yii2格式化程序-创建自定义格式

Gridview Yii2格式化程序-创建自定义格式,gridview,yii2,formatter,detailview,Gridview,Yii2,Formatter,Detailview,我想为DetailView和GridView创建自己的格式选项。我现在正在使用可用的格式化程序选项,如datetime: <?= DetailView::widget([ 'model' => $model, 'attributes' => [ 'current_date:datetime' ] ]?> 您可以扩展格式化程序类,并将“color”作为一种新的格式处理。像这样的 class MyForm

我想为DetailView和GridView创建自己的格式选项。我现在正在使用可用的格式化程序选项,如datetime:

<?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'current_date:datetime'
       ]
]?>

您可以扩展格式化程序类,并将“color”作为一种新的格式处理。像这样的

class MyFormatter extends \yii\i18n\Formatter
{
    public function asColor($value)
    {
        // translate your int value to something else...
        switch ($value) {
            case 0:
                return 'White';
            case 1:
                return 'Black';
            default:
                return 'Unknown color';
        }
    }
}
然后通过更改配置切换到使用此新格式化程序

'components' => [
    'formatter' => [
        'class' => '\my\namespace\MyFormatter',
        // other settings for formatter
        'dateFormat' => 'yyyy-MM-dd',
   ],
],
现在,您应该能够在gridview/datacolumn中使用颜色格式,如您所问:

'colorId:color'
…或通常通过调用应用程序的格式化程序组件:

echo Yii::$app->formatter->asColor(1);  // 'Black'

请注意,此代码未经测试,可能包含bug。

看起来非常好,谢谢!我试试看,然后告诉你。
echo Yii::$app->formatter->asColor(1);  // 'Black'