Страница 1 из 1

Порядок вывода данных в таблице GridView по дате создания YI

СообщениеДобавлено: 20 дек 2020, 12:53
vac9p
Есть сайт с CMS реализованной на yii2. В панели администратора есть раздел "клиенты", со списком клиентов и возможность редактирования каждого клиента. Данные об аккаунтах клиентов имеют дату создания и сейчас по дефолту сначала выводятся старые клиенты. Так вот, к вопросу - подскажите пожалуйста как изменить порядок вывода записей, таким образом, чтобы сначала выводились не старые клиенты, а новые? ps. таблица выводится с помощью виджета GridView.

Код: Выделить всё

 <?= GridView::widget([
            
'id' => 'customers',
            
'tableOptions' => [
                
'class' => 'table table-bordered table-hover table-striped',
            ],
            
'options'          => ['class' => 'table-responsive grid-view'],
            
'dataProvider' => $dataProvider,
            
'filterModel' => $searchModel,
            
'columns' => [
                
'first_name',
                
'last_name',
                
'email',
                
'source',
                
'adsCount',
                [
                 
'attribute'=>'created_at',
                 
'filter'=>  DatePicker::widget(
                     [
                        
'model' => $searchModel,
                        
'attribute' => 'created_at',
                        
'options'=>[
                            
'class'=>'form-control',
                            ],
                        
'dateFormat' => 'yyyy-MM-dd',
                     ]
                 )
                ],
                [
                 
'attribute'=>'status',
                 
'value'=> function($model) {
                     return 
t('app',ucfirst(html_encode($model->status)));
                 },
                 
'filter' => Html::activeDropDownList($searchModel'status', [ 'active' => t('app','Active'), 'inactive' => t('app','Inactive') ],['class'=>'form-control','prompt' => 'All'])
                ],
                [
                    
'class' => 'yii\grid\ActionColumn',
                    
'contentOptions' => [
                        
'class'=>'table-actions',
                        
'id' => 'table-action-customer'
                    
],
                    
'template' => '{activation} {activate} {deactivate} {impersonate} {view} {update} {delete}',
                    
'buttons'  => [
                        
'activation' => function ($url$model) {
                            return (
$model->status === \app\models\Customer::STATUS_INACTIVE && $model->activation_key != null) ? Html::a(
                                
'<span class="fa fa-envelope-o"></span>',
                                
$url,
                                [
                                    
'data-content'      => t('app''Resend the activation email.'),
                                    
'data-container'    => 'body',
                                    
'data-toggle'       => 'popover',
                                    
'data-trigger'      => 'hover',
                                    
'data-placement'    => 'top',
                                    
'data-pjax'         => '0',
                                    
'data-confirm'      => t('app''Are you sure you want to resend the activation email for this customer?'),
                                    
'style'             => 'margin-right: 7px'
                                
]
                            ) : 
'';
                        },
                        
'activate' => function ($url$model) {
                            return (
$model->status === \app\models\Customer::STATUS_INACTIVE || $model->status === \app\models\Customer::STATUS_DEACTIVATED) ? Html::a(
                                
'<span class="fa fa-check"></span>',
                                
$url,
                                [
                                    
'data-content'      => t('app''Set active'),
                                    
'data-container'    => 'body',
                                    
'data-toggle'       => 'popover',
                                    
'data-trigger'      => 'hover',
                                    
'data-placement'    => 'top',
                                    
'data-confirm'      => t('app''Are you sure you want to activate this customer?'),
                                    
'style'             => 'margin-right: 6px'
                                
]
                            ) : 
'';
                        },
                        
'deactivate' => function ($url$model) {
                            return 
$model->status === \app\models\Customer::STATUS_ACTIVE Html::a(
                                
'<span class="fa fa-times"></span>',
                                
$url,
                                [
                                    
'data-content'      => t('app''Set deactivated'),
                                    
'data-container'    => 'body',
                                    
'data-toggle'       => 'popover',
                                    
'data-trigger'      => 'hover',
                                    
'data-placement'    => 'top',
                                    
'data-pjax'         => '0',
                                    
'data-confirm'      => t('app''Are you sure you want to deactivate this customer?'),
                                    
'style'             => 'margin-right: 9px'
                                
]
                            ) : 
'';
                        },
                        
'impersonate' => function ($url$model) {
                            return 
Html::a(
                                
'<i class="fa fa-random"></i>',
                                
url(['/admin/customers/impersonate''id' => $model->customer_id]),
                                [
                                    
'data-content'      => t('app''Impersonate this customer account on frontend'),
                                    
'data-container'    => 'body',
                                    
'data-toggle'       => 'popover',
                                    
'data-trigger'      => 'hover',
                                    
'data-placement'    => 'top',
                                    
'data-pjax' => '0',
                                    
'style'     => 'margin-right: 5px'
                                
]
                            );
                        },
                    ],
                ],
            ],
        ]); 
?>


Re: Порядок вывода данных в таблице GridView по дате создани

СообщениеДобавлено: 21 дек 2020, 10:38
andipas
При создании $dataProvider используйте defaultOrder с сортировкой по нужному атрибуту.

Пример:
Код: Выделить всё

$dataProvider 
= new CActiveDataProvider('customers', array(
    'sort'=>array(
        'defaultOrder'=>'id DESC',
    ),
));

$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'sort' => ['defaultOrder'=>'topic_order asc']
]);


https://stackoverflow.com/questions/229 ... lt-sorting