forked from samdark/yiiframework_ru_cookbook
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathform.cstarrating.in.gridview.txt
92 lines (81 loc) · 2.66 KB
/
form.cstarrating.in.gridview.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Вывод CStarRating в GridView
=========================
В качестве вступления: На сайте есть система комментариев с рейтингом (выставление
оценок при помощи виджета [CStarRating]). Необходимо в [CGridView] отображать
выставленный с каждым комментарием рейтинг "звёздочками".
Для этого нам потребуется в представлении, например, `admin.php` в значение
ключа `value` написать:
~~~
[php]
$this->grid->controller->widget("CStarRating", array(
"name" => $data->id,
"id" => $data->id,
"value" => $data->rating,
"readOnly" => true,
), true);
~~~
Полный вид получится примерно следующим:
~~~
[php]
array(
'name' => 'rating',
'type' => 'raw',
'value'=>'$this->grid->controller->widget("CStarRating", array(
"name" => $data->id,
"id" => $data->id,
"value" => $data->rating,
"readOnly" => true,
), true)',
'headerHtmlOptions' => array('style' => 'width:85px;'),
'htmlOptions' => array('class' => 'rating-block'),
'filter' => false,
'sortable' => false,
),
~~~
Ну и чтобы после поиска, сортировки или фильтрации не отваливался вид (вместо
звёзд в этом случае отображается набор радиобатонов) необходимо добавить
следующий код:
~~~
[php]
'afterAjaxUpdate'=>"function() {
jQuery('.rating-block input').rating({'readOnly':true});
}",
~~~
В итоге должно получится как-то так:
~~~
[php]
$this->widget('bootstrap.widgets.TbGridView', array(
'id'=>'users-comments-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'afterAjaxUpdate'=>"function() {
jQuery('.rating-block input').rating({'readOnly':true});
}",
'columns'=>array(
array(
'name' => 'message',
'sortable' => false,
),
array(
'name' => 'rating',
'type' => 'raw',
'value'=>'$this->grid->controller->widget("CStarRating", array(
"name" => $data->id,
"id" => $data->id,
"value" => $data->rating,
"readOnly" => true,
), true)',
'headerHtmlOptions' => array('style' => 'width:85px;'),
'htmlOptions' => array('class' => 'rating-block'),
'filter' => false,
'sortable' => false,
),
),
));
~~~
Стоит изучить
-------------
- [CStarRating](http://www.yiiframework.com/doc/api/CStarRating).
- [CGridView](http://www.yiiframework.com/doc/api/CGridView).
---
- `Автор`: Сергей Жолобов, Xpycm ([monoray.ru](http://monoray.ru/)).