GridView和DetailView实在是太强大了。
但是正因为如此,这两个也做了很厚实的封装。当有细节调整的时候,有时候就总感觉不如自己写出来的灵活。
各有利弊吧。
这里整理了一下当填充的数据需要格式化时的几种方法,可能不全,找到后随时加。
1.直接在标签里用预置的格式化方式去格式化
如想着格式化一下时间,那么可以这样
[
'attribute' => 'updated_at',
'format' => ['date', 'php:Y-m-d H:i:s'],
]
上边的format就是格式方式啦,其他的格式化方式可以去i18n的formatter里去查。
2.直接调取yii的formatter
[
'attribute' => 'created_at',
'value'=> Yii::$app->formatter->asDate($model->created_at,"php:Y-m-d H:i:s"),
],
看了代码就不具体解释了
3.直接调自己写的方法
有时候,可能框架提供的格式化方法并不够用,想自定义一个,那么也可以。
可以把方法定义到model里,或者是自己写一个静态类
调用方法如下
写到model里的可以这么调用
[
'attribute' => 'status',
'value'=> $model->generateStatus(),
],
记得在自己写的方法里return一个字符串作为值。
如果自己写的类,那么调用方式就和i18n的formatter一样了。
4.使用匿名函数方式自定义格式化
代码如下:
[
'attribute' => 'created_at',
'value'=> function($model){
return date('Y-m-d H:i:s',$model->created_at);
}
]
以上方法格式化了时间,但是这种匿名函数的形式只能在GridView里用,Detailview里用报错,暂时不知道为什么,有知道的欢迎回复一下。