2016-10-27 4 views
0

私はこのDataProviderを使ってCGridViewウィジェットを供給していますが、列はまだクリック可能ではなく、並べ替えもできません。
ここで何が問題なのですか?CGridViewウィジェット、Yiiの関連する列を並べ替えることができません。

コントローラー:

$dataProvider = new CActiveDataProvider('SubscriberAuthor', [ 
    'criteria' => [ 
     'with' => [ 
      'subscriber' => [ 'select' => 'name, email' ] 
     ], 
     'condition' => "author_id = {$author_id} And verified = 1" 
    ], 
    'sort' => [ 
     'attributes' => [ 
      'name'=> [ 
       'asc'=>'subscriber.name Asc', 
       'desc'=>'subscriber.name Desc', 
      ], 
      'email'=> [ 
       'asc'=>'subscriber.email Asc', 
       'desc'=>'subscriber.email Desc' 
      ] 
     ] 
    ], 
    'countCriteria' => [ 'condition' => "author_id = {$author_id} And verified = 1" ] 
]); 

ビュー:

$this->widget('zii.widgets.grid.CGridView', [ 
    'dataProvider' => $dataProvider, 
    'enableSorting' => true, 
    'columns' => [ 'subscriber.name', 'subscriber.email' ] 
]); 

答えて

0

もちろん、th電子の問題は、私は列の完全修飾名を使用していないした。

'sort' => [ 
    'attributes' => [ 
     'subscriber.name'=> [ 
      'asc'=>'subscriber.name Asc', 
      'desc'=>'subscriber.name Desc', 
     ], 
     'subscriber.email'=> [ 
      'asc'=>'subscriber.email Asc', 
      'desc'=>'subscriber.email Desc' 
     ] 
    ] 
] 
1

は、列名に使用すると、テーブル名ではなく関係やモデル名を使用していることを確認してください

 'attributes' => [ 
     'name'=> [ 
      'asc'=>'subscriber_table.name Asc', 
      'desc'=>'subscriber_table.name Desc', 
     ], 
     'email'=> [ 
      'asc'=>'subscriber_table.email Asc', 
      'desc'=>'subscriber_table.email Desc' 
     ] 
+0

をはい、それは、テーブルとリレーション名の両方の 'subscriber'は、モデル名は' Subscriber' – Petruza

+0

ああですが、実際に私にインスピレーションを与え解決策に終わったものを試してみてください。ありがとう! – Petruza

+0

@Petruzaもし私の答えが役に立つなら、それをレートしてください – scaisEdge

関連する問題