Добрый день! Тема немного похожа, поэтому напишу сюда.
Разобрался с фильтрами и сортировкой. Однако косяк следующий: хочу добавить свою кнопку в колонку
Код: Выделить всё
array(
'class'=>'CButtonColumn',
'template' => '{update}{view}{approve}',
'buttons' => array(
'approve' => array (
'url' => "#",
'icon'=>"ok",
)
),
),
При таком варианте все отлично получается. кнопка выводитсья но при фильтрации и сортировке alert выкидвает. Если мою кнопку убрать все отлично.
на всякий случай приведу код из модели
Код: Выделить всё
$criteria = new CDbCriteria;
$criteria->condition = "t.status_id=:status";
//$criteria->addCondition('status_id=1');
$criteria->params=array(':status'=>1);
$criteria->compare('id', $this->id);
$criteria->compare('title', $this->title, true);
$criteria->compare ('time_add', $this->time_add);
$criteria->compare ('category_id', $this->category_id);
$criteria->with = array('author');
$criteria->compare('author.login', $this->author_id, true);
$criteria->with = array('category');
$sort = new CSort();
$sort->attributes = array(
'author_id' => array(
'asc' => $expr = 'author.login',
'desc' => $expr . ' DESC',
),
'time_add' => array(
'asc' => $expr = 'time_add',
'desc' => $expr . ' DESC',
),
'title' => array(
'asc' => $expr = 'title',
'desc' => $expr . ' DESC',
),
'category_id' => array(
'asc' => $expr = 'category.name',
'desc' => $expr . ' DESC',
)
);
return new CActiveDataProvider(get_class($this), array(
'criteria' => $criteria,
'sort' => $sort,
));
2. Другая проблема. Есть элемент, у него есть категория и подкатегория. Но подкатегории может не быть и тогда у записи там NULL. Как сделать сортировку и фильтр по такому полю...
везде проатывало что-то вроде
а тут в value такое не засунешь =( Или я криво написал?
Мой работающий код виджета без этого столбца подкатегории
Код: Выделить всё
<?php
$this->widget('bootstrap.widgets.BootGridView',array(
'id'=>'post-grid',
'dataProvider' => $model->searchModer(),
'filter' => $model,
'columns' => array(
array(
'name'=>'time_add',
'sortable' => true,
'value' => 'date("d-m-Y", strtotime($data->time_add))',
),
array(
//Это и есть вывод названия меню из связанной таблицы
'name' => 'author_id',
//'filter' => CHtml::listData(SubmenuParts::model()->findAll(), 'id', 'part_name'),
'value' => '$data->author->login',
'sortable' => true,
),
array(
//Это и есть вывод названия меню из связанной таблицы
'name' => 'title',
//'filter' => CHtml::listData(SubmenuParts::model()->findAll(), 'id', 'part_name'),
'value' => 'substr($data->title,0,15)."..."',
'sortable' => true,
),
array
(
'name' => "category_id",
'value' => '$data->category->name',
'filter' => CHtml::listData(Category::model()->findAll('parent_id=0'),
'id', 'name'),
'sortable' => true,
),
array(
'class'=>'CButtonColumn',
'template' => '{update}{view}{approve}',
'buttons' => array(
'approve' => array (
'url' => "#",
'icon'=>"ok",
)
),
),
),
));
?>