首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSqlDataProvider attributeLabels

CSqlDataProvider attributeLabels
EN

Stack Overflow用户
提问于 2012-05-23 17:34:50
回答 2查看 1.5K关注 0票数 0
代码语言:javascript
复制
<?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
*/

如何设置查询列的自定义名称?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-23 17:39:16

最简单的方法:

代码语言:javascript
复制
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $model->search(), //$model = new SomeForm()    
    'columns' => array(
        'id::ID',
        'name::NAME'
    ),
));

另一种方式:

代码语言:javascript
复制
$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',
        ),
    ),
));

Link to api doc

票数 1
EN

Stack Overflow用户

发布于 2013-05-10 04:50:48

如果您不想使用自定义名称;如果您想使用在模型中声明的标签,那么您可以这样做:

  1. 创建模型的空实例并将其传递到视图。因此,视图将利用$data (CSqlDataProvider)以及空模型。

$labelModel =新建my_model;$this->widget('zii.widgets.CListView',CSqlDataProvider ( 'dataProvider' => $my_ model ->search(),//返回一个viewData 'itemView'=> '_view','viewData‘=>数组(’labelModel‘=> $labelModel),));

  • 使用空模型和getAttributeLabel回显标签。

  • 使用$data['field_name']回显数据。

link包含有关如何将附加模型传递给CListViewCGridView的更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10717219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档