Необходимо сделать интерфейс назначения пользователям ролей. Для этого есть представление "Управление ролями" в модели и CRUD Юзера.
Там по задумке должна выводится таблица всех ролей, которые есть в принципе + поле с чекбоксом. И те роли которые есть у этого пользователя, должен чекбокс стоять в checked. При этом нет никаких кнопок типа "сохранить". Всё делается он-лайн. Админ поставил галку - запустился аякс скрипт который дал эту роль юзеру. Админ убрал галку - так же по аяксу удалилось соотвествие роли юзеру.
Проблема возникла, как раз при добавлении поля с этим чекбоксом. Оно оказывается обязательно должно быть в модели прописано (т.е. должно быть в таблице roles). Ну да ладно, это моно обоити используя для этого поле data, которое вообще ХЗ зачем нужно.
Я делаю так:
Код: Выделить всё
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'users-grid',
'dataProvider'=>roles::model()->search(),
'filter'=>roles::model(),
'columns'=>array(
'name',
'description',
'bizrule',
array(
'name'=>'data',
'value'=>'<input type="checkbox" id="XZ" value="ZX">',
),
),
));
Parse error: syntax error, unexpected '<' in Z:\home\kafedra\www\frontend\framework\base\CComponent.php(587) : eval()'d code on line 1
Там на этой строке как раз выполняется возврат результата: return eval('return '.$_expression_.';');.
Ну да ладно, добавим ещё одни кавычки:
Код: Выделить всё
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'users-grid',
'dataProvider'=>roles::model()->search(),
'filter'=>roles::model(),
'columns'=>array(
'name',
'description',
'bizrule',
array(
'name'=>'data',
'value'=>'\'<input type="checkbox" id="XZ" value="ZX">\'',
),
),
));
<input type="checkbox" id="XZ" value="ZX">
При этом не собираюсь пока даже начинать думать, как в id чекбокса к примеру, передать id выводимой роли.
В общем то всё можно сделать добавлением костылей, ну вроде как использовании поля data, хотя оно для этого не преднозначено.
В общем можно это всё сделать как то по нормальному, без костылей? И как?