yii bootstrap + widget TbButtonColumn + widget TbButtonGroup
I've always found that when I need to render a complex element in a gridview (especially a widget) it's easier if you call a function from the controller. For example your gridview would have columns that are defined like this:
'columns'=>array(
'surname',
'name',
'middlename',
'dateOfBirth'
...
array(
'name'=>'fieldName',
//call the function 'renderButtons' from the current controller
'value'=>array($this,'renderButtons'),
),
)
And then in your action would look something like this. This just renders the example widget from Yii-booster example page http://yii-booster.clevertech.biz/components.html#buttonDropdowns:
Edit: This is also helpful because of the callback function renderButtons() accepts 2 parameters: $data and $row. You can use $data to access data from the gridview's data provider in order to dynamically render a widget.
public function renderButtons($data, $row) {
$this->widget('bootstrap.widgets.TbButtonGroup', array(
'size'=>'large',
'type'=>'inverse', // '', 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
'buttons'=>array(
array('label'=>'Inverse', 'items'=>array(
array('label'=>'Action', 'url'=>'#'),
array('label'=>'Another action', 'url'=>'#'),
array('label'=>'Something else', 'url'=>'#'),
'---',
array('label'=>'Separate link', 'url'=>'#'),
)),
),
));
}
Botir Ziyatov
Updated on June 13, 2022Comments
-
Botir Ziyatov almost 2 years
yii bootstrap + widget TbButtonColumn + widget TbButtonGroup
Faced with such a problem:
Table is formed by the widget TbGridView from bootstrap (from yii-booster). In the column TbButtonColumn I form the "edit / delete, etc."
But one button I want to do with the effect of Split dropdowns http://yii-booster.clevertech.biz/components.html#buttonDropdowns
$this->widget('bootstrap.widgets.TbGridView', array( 'id'=>'customer-grid', 'type'=>'striped bordered condensed', 'dataProvider'=>$model->search(), 'filter'=>$model, 'columns'=>array( 'surname', 'name', 'middlename', 'dateOfBirth', array( 'class'=>'bootstrap.widgets.TbButtonColumn', 'template'=>'{add} {list} {update} {print_act}', 'buttons'=>array ( 'add' => array ( 'label'=>'Назначить прием', 'icon'=>'plus', 'url'=>'Yii::app()->createUrl("reception/create", array("id"=>$data->id))', 'options'=>array( 'class'=>'btn btn-small', ), ), 'list' => array ( 'label'=>'Список предоставленных услуг', 'icon'=>'list white', 'url'=>'Yii::app()->createUrl("patient/update", array("id"=>$data->id))', 'options'=>array( 'class'=>'btn btn-small btn-info', ), ), 'update' => array ( 'label'=>'Изменить данные Пациента', 'icon'=>'pencil white', 'url'=>'Yii::app()->createUrl("customer/update", array("id"=>$data->id))', 'options'=>array( 'class'=>'btn btn-small btn-success', ), ), 'print_act' => array ( 'label'=>'Печать акта выполненных работ', 'icon'=>'print', 'url'=>'Yii::app()->createUrl("customer/printAct", array("id"=>$data->id))', 'options'=>array( 'class'=>'btn btn-small', ), ), ), 'htmlOptions'=>array( 'style'=>'width: 220px', ), ) ), ));