Yii: изменить порядок по умолчанию в CGridView

Я сгенерировал giix crud для модели Часто задаваемые вопросы

Контроллер:

public function actionAdmin() {
    $model = new Faq('search');
    $model->unsetAttributes();

    if (isset($_GET['Faq']))
        $model->setAttributes($_GET['Faq']);

    $this->render('admin', array(
        'model' => $model,
    ));
}

Вид – администратор:

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'faq-grid',
    'dataProvider' => $model->search(array('order'=>'order ASC')),
    'filter' => $model,
    'columns' => array(
        'order',
        'question',
        'answer',
        array(
            'class' => 'CButtonColumn',
        ),
    ),
)); ?>

Я хочу упорядочить элементы по полю «порядок», поэтому я добавляю array('order'=>'order ASC') к $model->search();, но это ничего не меняет. Где ошибка?


person andrzej1_1    schedule 16.09.2013    source источник


Ответы (3)


обновите функцию search() в модели и добавьте следующий код

'criteria'=>$criteria,
//add here

'sort'=>array(
    'defaultOrder'=>'order ASC',
),

и внутри представления администратора измените поставщика данных на этот

'dataProvider' => $model->search(),
person Neophile    schedule 16.09.2013

получить CActiveDataProvider

$dataProvider = $model->search();

и отредактируйте свойство "сортировать"

$dataProvider->sort = array(
  'defaultOrder'=>'order ASC'
);
person mego4iter    schedule 16.09.2013

В методе 'search($order)' вы можете поместить:

$criteria=new CDbCriteria;
$criteria->order = $order; // $order = 'order ASC' in your example.

return new CActiveDataProvider(YourModel::model(), array(
            'criteria'=>$criteria,
        ));
person Daniel Vaquero    schedule 16.09.2013