我正在尝试修改从Yii框架网站上的Gii教程获得的GridView字段。
我对填充字段的外观不满意,因此我尝试使用一些分隔符对其进行转换。
这是“国家/地区视图”的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'
然后当我尝试在视图中转换它时,我遇到了一些问题,因为“人口”基本上是一个字符串。
我评论了一些尝试。
答案 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',
....