to sort each colum, i add :
public function actionAdmin()
{
$sort = new CSort;
$sort->defaultOrder = 'username ASC';
$sort->attributes = array(
'username'=>'username',
'email'=>'email',
'createtime'=>'createtime',
'lastvisit'=>'lastvisit',
'subscription start' => array(
'asc'=>'subscription.subscriptionstart',
'desc'=>'subscription.subscriptionstart DESC',
),
'subscription end' => array(
'asc'=>'subscription.subscriptionend',
'desc'=>'subscription.subscriptionend DESC',
),
'amount' => array(
'asc'=>'subscription.amount',
'desc'=>'subscription.amount DESC',
),
);
$dataProvider=new CActiveDataProvider('User', array(
'criteria' => $criteria,
//'criteria'=>array(
//'with'=>array('subscription:isactiv'=>array('select'=>'{{subscription}}.*','joinType'=>'LEFT OUTER JOIN',
// ),
// ),
//'together'=>true,
//),
'pagination'=>array(
'pageSize'=>Yii::app()->controller->module->user_page_size,
),
'sort' => $sort,
//'pagination'=>array( 'pageSize'=>30),
));
and it work fine
But a have a last problem, and after reading a lot on the forum, i need your help.
A would like to add a filter :
So, in the widget, i add : ‘filter’=>$dataProvider,
<?php
$this->breadcrumbs=array(
UserModule::t('Users')=>array('admin'),
UserModule::t('Manage'),
);
?>
<h1><?php echo UserModule::t("Manage Users"); ?></h1>
<?php echo $this->renderPartial('_menu', array(
'list'=> array(
CHtml::link(UserModule::t('Create User'),array('create')),
),
));
?>
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'filter'=>$dataProvider,
'columns'=>array(
//array(
// 'name' => 'id',
// 'type'=>'raw',
// 'value' => 'CHtml::link(CHtml::encode($data->id),array("admin/update","id"=>$data->id))',
//),
array(
'name' => 'username',
'type'=>'raw',
'value' => 'CHtml::link(CHtml::encode($data->username),array("admin/view","id"=>$data->id))',
),
array(
'name'=>'email',
'type'=>'raw',
'value'=>'CHtml::link(CHtml::encode($data->email), "mailto:".$data->email)',
),
array(
'name' => 'createtime',
'value' => 'date("d.m.Y",$data->createtime)',
),
array(
'name' => 'lastvisit',
'value' => '(($data->lastvisit)?date("d.m.Y",$data->lastvisit):UserModule::t("Not visited"))',
),
//array(
// 'name'=>'status',
// 'value'=>'User::itemAlias("UserStatus",$data->status)',
//),
//array(
// 'name'=>'superuser',
// 'value'=>'User::itemAlias("AdminStatus",$data->superuser)',
//),
array(
'name' => 'subscription start',
'value' => 'isset($data->subscription->subscriptionstart)? date("d.m.Y",$data->subscription->subscriptionstart) : \'\'',
),
array(
'name' => 'subscription end',
'value' => 'isset($data->subscription->subscriptionend)? date("d.m.Y",$data->subscription->subscriptionend) : \'\'',
),
array(
'name' => 'amount',
'value' => 'isset($data->subscription->amount)? $data->subscription->amount : \'\'',
),
//array(
// 'name' => 'activ',
// 'value' => 'isset($data->subscription->activ)? $data->subscription->activ : \'\'',
// ),
array(
'class'=>'CButtonColumn',
),
),
));
?>
But i have a error : CActiveDataProvider does not have a method named "getValidators".
Thanks