К примеру- мой абстрактный класс в котором один метод, позволяющий сортировать и листать (фильтровать в будущем) модель
Код: Выделить всё
// Доступные атрибуты для сортировки
public function attributeSort()
{
return array_keys($this->attributeLabels());
}
// Данные для View
public function getGridView($criteria=array())
{
$criteria = new \CDbCriteria($criteria);
// TODO Фильтр
$fullCount = $this->count($criteria);
$attributeSort = $this->attributeSort();
if(count($attributeSort))
{
// Сортировка
$sort = new \CSort($this);
$sort->attributes = $this->attributeSort();
$sort->defaultOrder = $criteria->order;// задаем сортировку по умолчанию из criteria
$criteria->order = ''; // Удаляем сортировку, чтоб потом её приминить
$sort->applyOrder($criteria);
}
if($criteria->limit)
{
// Постраничка
$pages = new \CPagination($fullCount);
// элементов на страницу
$pages->pageSize = $criteria->limit;
$pages->applyLimit($criteria);
}
// выборка // listData()->
$models = $this->findAll($criteria);
return array(
'models' => $models,
'pages' => $pages,
'sort' => $sort,
'fullCount' => $fullCount
);
}
А из коробки не позволяет такое проделать - и это, ИМХО, не удобно и не красиво. К тому же внутри CSort везде прописано "CActiveRecord::model($this->modelClass)" и получается он жестко привязан к CActiveRecord.
Вот мой вариан
https://github.com/Xakki/yii/commit/03d ... 5661339c02
+ ко всему я столкнулся с проблемой передать в defaultOrder строку - в итоге он просто игнорирует дефолтную сортировку и фикс для него там же.
Резюме - Стоит ли это продвигать в офф репозиторий? Какие могут возникнуть проблему у других если обновят это?