2016-08-31 3 views
0

私はcrud for userテーブルを作成しました。管理ページでカスタムカラム値を表示するためのカスタムコードを実装しました$this->widget('zii.widgets.grid.CGridView',array())....テーブルのカラムからカラムフィルタバーにカスタムデータ用のコードを追加しようとすると表示されません。続き
は、上記のコードで
Yiiフレームワークの列にカスタムデータを使用すると、フィルタバーが表示されない

<?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、姓と名前を表示しません。これにフィルタバーを追加するには?

答えて

0

データが属している属性をnameで指定する必要があります。ドキュメントから:

[name]:データモデルの属性名。列のソート、フィルタリング、および各データセル内の対応する属性値のレンダリングに使用されます。値が指定されている場合は、属性値の代わりにデータセルをレンダリングするために使用されます。

次のようなコードがあるべきとおり:

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

Also

列を文字列として指定され、それが「どこ"name:type:header"、の形式にする必要がありますタイプ "と"ヘッダー "はオプションです。次のように

は、このように上記短縮することができる。

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

おかげ@topher ....あなたの最初のコードが働きました。しかし、唯一の問題は、姓と名字で動作するコードですが、最初の列で動作していないIDは 'HJ'などのカスタムテキストを追加したIDです。 – Omkar

+0

働いていないということはどういう意味ですか?フィルタが表示されていませんか? – topher

+0

フィルターバーが表示されていますが、 'HJ-'などのカスタムテキストを追加したために機能しません.IDだけでフィルタリングしますが、 'HJ-'などのカスタムテキストをフィルタリングしません – Omkar

関連する問題