<?php
//form
class SomeForm extends CFormModel
{
public $id;
public $user_id;
public function search()
{
$sql = 'SELECT id, name FROM some_table';
$sql_count = 'SELECT COUNT(id) FROM some_table';
return new CSqlDataProvider($sql, array(
'totalItemCount' => Yii::app()->db->createCommand($sql_count)->queryScalar(),
'sort' => array(
'attributes' => array(
'id', 'name',
),
),
'pagination' => array(
'pageSize' => 50,
),
));
}
public function attributeLabels()
{
return array(
'id' => 'ID',
'name' => 'NAME',
);
}
}
//grid
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $model->search(), //$model = new SomeForm()
'columns' => array(
'id',
'name'
),
));
/*
Result:
id | name
---------
1 | John
EXPECTED Result:
ID | NAME
---------
1 | John
*/
如何为查询列设置自定义名称?
答案 0 :(得分:1)
最简单的方法:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $model->search(), //$model = new SomeForm()
'columns' => array(
'id::ID',
'name::NAME'
),
));
另一种方式:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider' => $model->search(), //$model = new SomeForm()
'columns' => array(
array(
'header' => 'ID',
'name' => 'id'
),
array(
'header' => 'NAME',
'name' => 'name',
),
),
));
答案 1 :(得分:0)
如果您不想使用自定义名称;如果您想使用模型中声明的标签,那么您可以这样做:
创建模型的空实例并将其传递给视图。因此,视图将使用$data
(CSqlDataProvider
)以及空模型。
$labelModel = new my_model;
$this->widget('zii.widgets.CListView',array(
'dataProvider'=>$my_model->search(), //returns a CSqlDataProvider
'itemView'=> '_view',
'viewData' => array('labelModel' => $labelModel),
));
使用空模型 - 与getAttributeLabel一起 - 回显标签。
$data['field_name']
来回显数据。此link有关于如何将其他模型传递到CListView
或CGridView
的更多信息。