Modifty GridView :: Widget内容Yii

时间:2019-12-03 21:00:33

标签: php gridview yii2

我正在尝试修改从Yii框架网站上的Gii教程获得的GridView字段。

GII PAGE

我对填充字段的外观不满意,因此我尝试使用一些分隔符对其进行转换。

这是“国家/地区视图”的index.php

  <?=
    GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'code',
            'name',
            [
                'label' => 'Population',
                'value' => 'population',
            /* 'value' => Yii::$app->formatter->asDecimal((integer)population) */
            /*  'value' => Yii::$app->formatter->asDecimal($model->population) */
            /* 'value' =>  Yii::$app->formatter->asDecimal('population') */
            /*'value' => Yii::$app()->format->number('population')*/
            ],
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]);
    ?>

我不知道为什么在CountryModel中人口字段被列为整数:

['population'], 'integer'

然后当我尝试在视图中转换它时,我遇到了一些问题,因为“人口”基本上是一个字符串。

我评论了一些尝试。

1 个答案:

答案 0 :(得分:1)

您可以使用yii\i18n\Formatter

如果使用的是 common\config\main.php ,请转到app-advanced;如果使用的是 app/config/main.php ,请转到app-basic,然后添加在components数组下。

'formatter' => [
     'thousandSeparator' => ',',
],

现在您可以像下面这样格式化任何给定的数字

<?=
    GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'code',
            'name',
            [
                'attribute' => 'population',
                'label' => 'Population',
                'value' => function($model){
                    return Yii::$app->formatter->asInteger($model->population); //Output 1,000
                },
            ],
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]);
    ?>

更新:就像评论中提到的那样,您还可以使用这两种技术来格式化值:

//Gridview
....
[
    'attribute' => 'population',
    'format' => 'integer',
],
....

和/或:

//Gridview
....
'population:integer',
....