Yiiでは、検索結果などを一覧で表示するのにGridViewというのを使います。
<?php $this->widget('bootstrap.widgets.TbGridView',array(
'id'=>'card-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'name',
'imgdata',
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
),
),
)); ?> 例えば、imgdataというカラムについて、データをそのまま表示するのではなく、同モデルのrenderPreviewという関数で処理した内容を表示したい場合は以下のようにします。(同モデルではなく、同コントローラの関数なら$modelのかわりに$thisを使う)
<?php $this->widget('bootstrap.widgets.TbGridView',array(
'id'=>'card-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'name',
array(
'name'=>'imgdata',
'type'=>'raw',
'value'=>array($model,'renderPreview'),
),
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
),
),
)); ?> なお、「’type’=>’raw’」はHTMLタグをエスケープしないで表示するという指定です。
typeの他によく使うのは、filter、header、htmlOptionsでしょうか。
<?php $this->widget('bootstrap.widgets.TbGridView',array(
'id'=>'card-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'id',
'name',
array(
'name'=>'imgdata',
'type'=>'raw',
'value'=>array($model,'renderPreview'),
'filter'=>false,
'header'=>'画像',
'htmlOptions'=>array('style'=>'margin: 20px;'),
),
array(
'class'=>'bootstrap.widgets.TbButtonColumn',
),
),
)); ?> のようにすると、
となります。
※参考
CDataColumn