当我在Yii框架中使用列的自定义数据时,不显示过滤条

时间:2016-08-31 12:46:21

标签: php yii yii-components

我为用户表创建了crud。在管理页面中,我实现了自定义代码,用于在$this->widget('zii.widgets.grid.CGridView',array())....中显示自定义列值当我尝试在列过滤器栏中添加自定义数据的代码时,表格的该列未显示。
以下是我的代码,以管理页面为

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'users-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
        'itemsCssClass' => 'table table-responsive  table-striped table-hover table-bordered',
    'columns'=>array(
        array(
                    'header' => 'ID',                                        
                    'type' => 'raw',                    
                    'value' => function($model, $key, $index) {
                        return 'HJ-'.date('Ym',  strtotime($model->created_date)).$model->id;
                    },

                ),

        array(
                    'header' => 'First Name',                                        
                    'type' => 'raw',
                    'value' => '$data->fname',
                ),
        array(
                    'header' => 'Last Name',                                        
                    'type' => 'raw',
                    'value' => '$data->lname',
                ),
                'contact_no',
         array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>

在上面的代码中,过滤条显示为'contact_no',但由于自定义代码,它不显示ID,名字和姓氏。如何为此添加过滤条?

1 个答案:

答案 0 :(得分:0)

您必须通过name指明数据属于哪个属性。来自文档:

  

[name]:数据模型的属性名称。用于列排序,过滤以及在每个数据单元格中呈现相应的属性值。如果指定了value,它将用于呈现数据单元而不是属性值。

因此,您的代码应如下所示:

array(
    'header' => 'First Name',                                        
    'type' => 'raw',
    'value' => '$data->fname',
    'name' => 'fname',
),

Also

  

当一列被指定为字符串时,它的格式应为"name:type:header",其中&#34;键入&#34;和#34;标题&#34;是可选的。

因此,上述内容可以缩短如下:

'columns'=>array(
    ...
    'fname:raw:First Name',
    'lname:raw:Last Name',
    ...