yiicgridview

Can't sort related columns of CGridView widget, Yii 1.1


I'm using this DataProvider to feed a CGridView widget, but the columns still don't show as clickable and of course don't allow sorting.
What's wrong here?

Controller:

$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" ]
]);

View:

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

Solution

  • Of course, the problem was I was not using the fully qualified names of the columns:

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