Я пытаюсь показать/скрыть определенные данные столбца в виджете CGridView
для Wii Framework.
У меня есть CButtonColumn
, который содержит 3 кнопки. Однако при определенных условиях я хочу отображать что-то другое для определенной строки. У меня есть 3 разных условия, которые определяют, что отображается для конкретной строки.
Ниже показано, что я хочу сделать:
| 1 | Title A | [hide][view][update] <-- if (condition == 'a')
| 2 | Title B | [hide][view][update] <-- if (condition == 'a')
| 3 | Title C | display text or link or button <-- if (condition == 'b')
| 4 | Title D | display alternative buttons <-- if (condition == 'c')
Каков мой лучший подход здесь?
Я не могу использовать 'visible'=> $model->processingStatus != "processed"
для столбца, потому что это удалит весь столбец. Мне нужно настроить таргетинг на каждую строку insatead.
Должен ли я использовать параметр 'visible'
для каждой отдельной кнопки? Я пробовал это, используя закомментированный код ниже, но он ломает страницу. К вашему сведению: я успешно попробовал «видимый» параметр в самой CButtonColumn, но это не то, что мне нужно. Плюс не уверен, какой статус строки он читает.
Или я должен добавить функцию к контроллеру? Пусть он выполняет операторы if/else и возвращает то, что должно отображаться. Как это будет работать?
Вот мой код:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'my-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'myid',
'header'=>'ID',
),
'Title',
array(
'class'=>'CButtonColumn',
'visible'=> $model->status != "done",
'template'=>'{hide}{view}{update}',
'buttons'=>array(
'hide'=>array(
'label'=>'Hide', //Text label of the button.
'imageUrl'=>Yii::app()->request->baseUrl . '/img/icons/bulb-off.png' //Image URL of the button.
//'click'=>'function(){alert("Toggle Hide!");}', //A JS function to be invoked when the button is clicked.
//'options'=>array(), //HTML options for the button tag.
//'url'=>'javascript:void(0)', //A PHP expression for generating the URL of the button.
//'visible'=> $model->status == "done", //A PHP expression for determining whether the button is visible.
),
'view'=>array(
//Text label of the button.
'label'=>'View',
//Image URL of the button.
'imageUrl'=>Yii::app()->request->baseUrl . '/img/icons/view-record.png'
),
'update'=>array(
'label'=>'Update/Edit',
'imageUrl'=>Yii::app()->request->baseUrl . '/img/icons/edit-pencil.png',
'url'=>'Yii::app()->createUrl("metadataandchapters/create?bookid=" . $data->bookid)',
)
)
)
)
)); ?>
Надеюсь, я достаточно хорошо понимаю здесь!