Динамический button template в GridView

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
artos
Сообщения: 38
Зарегистрирован: 2011.05.17, 17:20

Динамический button template в GridView

Сообщение artos »

Всем привет, мне нужно для некоторых объектов(например у которых атрибут can_delete = 0) не выводить иконку удаления и редактирования, возможно ли такое сделать?
lnghost
Сообщения: 134
Зарегистрирован: 2011.07.26, 18:05
Откуда: Воронеж
Контактная информация:

Re: Динамический button template в GridView

Сообщение lnghost »

Насколько я понимаю, нет. Темплейт задается для всего грида. Но можно, пожалуй, яваскриптами это как-то обработать, поудаляв кнопки в нужных местах.
Конференция: yii@conference.jabber.ru Сайт: http://kamaran.ru
navy
Сообщения: 21
Зарегистрирован: 2010.11.15, 12:59

Re: Динамический button template в GridView

Сообщение navy »

Я делаю так

Код: Выделить всё

array(
            'class' => 'CButtonColumn',
            'buttons' => array(
                'delete' => array(
                    'imageUrl' => '/images/delete_pg.png',
                    'visible' => '$data->can_delete != 0',
                ),
            ),
            'template' => '{delete}',
 
Аватара пользователя
artos
Сообщения: 38
Зарегистрирован: 2011.05.17, 17:20

Re: Динамический button template в GridView

Сообщение artos »

большое спасибо. тоже вначале с помощью Js это решил
andreyrud
Сообщения: 265
Зарегистрирован: 2011.09.26, 14:59

Re: Динамический button template в GridView

Сообщение andreyrud »

Немного усложним...

Нужно в зависимости от $data->cond:
1. Изменить label
2. изменить картинку в imageUrl
3. оставить visible = true.
Vic
Сообщения: 109
Зарегистрирован: 2010.03.12, 01:55

Re: Динамический button template в GridView

Сообщение Vic »

andreyrud писал(а): Немного усложним...
лучше все-таки упрощать :)

Код: Выделить всё

$this->widget('zii.widgets.grid.CGridView', array(
  'id'=>'recipe-grid',
  'dataProvider'=>$model->search(),
  'filter'=>$model,
  'columns'=>array(
    'rec_id',
// это в значения всякую всячину выводим
    array(
      'name'=>'user_name',
      'type'=>'raw',
      'value'=>'$data->pharmacy->user_name',
    ),
    array(
      'name'=>'rec_sig',
      'type'=>'raw',
      // тут душа может развернуться
      'value'=>'gettype($data->rec_sig).": ".print_r($data->rec_sig, true)', 
    ), 
    // а тут кнопки городим сколько надо и с разными условиями
    array(
      'class'=>'CButtonColumn',
      'template'=>'{noop}{sign}{nosign}{print}{update}',
      'updateButtonImageUrl' => "/images/update.png",
      'buttons'=>array(
        'noop'=>array(
          'visible'=>'!is_null($data->rec_checked)',
          'imageUrl'=>'/images/r_signed.png',
        ),
        'sign'=>array(
          'visible'=>'is_null($data->rec_checked) 
                         && !is_null($data->rec_sig)',
          'imageUrl'=>'/images/r_unsigned.png',
          'label'=>'signed',
        ),
        'nosign'=>array(
          'visible'=>'is_null($data->rec_checked) 
                         && is_null($data->rec_sig)',
          'imageUrl'=>'/images/r_unsigned.png',
          'label'=>'no signed',
        ),
        'print'=>array(
          'imageUrl'=>'/images/r_print.png',
          'url'=>'Yii::app()->controller->createUrl("printview",array("id"=>$data->primaryKey))',
        ),
      )
    ), 
),
));
 
это я к тому, что, может, не кнопки у каждой записи менять, а в столбцах выводить нужные ссылочки с нужными рисунками? Не вариант?
Ответить