2013-05-03 29 views
6

Yii引導+插件TbButtonColumn +插件TbButtonGroup

這樣的問題面臨:Yii引導+插件TbButtonColumn +插件TbButtonGroup

表由插件TbGridView從自舉(從YII助力器)形成。在TbButtonColumn列中,我形成了「編輯/刪除等」。

但一個按鈕,我想拆分的效果做的下拉菜單 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', 
      ), 
     ) 
    ), 
)); 
+0

我還沒有與TbGridView合作過,但我認爲你可以擴展TbGridView小部件。找到原作者繪製按鈕的位置,然後您可以覆蓋此功能,以啓動自定義按鈕小部件。這個小部件的輸入應該從TbGridView選項中給出。 – 2013-05-03 09:51:43

回答

5

我總是發現,當我需要呈現在GridView複雜的元素(特別是小部件)更容易如果你從控制器調用一個功能。例如,你的gridview會有這樣定義的列:

'columns'=>array(
    'surname', 
    'name', 
    'middlename', 
    'dateOfBirth' 
    ... 
    array(
     'name'=>'fieldName', 
     //call the function 'renderButtons' from the current controller 
     'value'=>array($this,'renderButtons'), 
    ), 
) 

然後在你的動作看起來像這樣。這只是呈現了來自Yii-booster示例的示例小部件頁面http://yii-booster.clevertech.biz/components.html#buttonDropdowns

編輯:由於回調函數renderButtons()接受2個參數:$ data和$ row,所以這也很有幫助。您可以使用$ data從gridview的數據提供者訪問數據,以便動態地呈現一個小部件。

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'=>'#'), 
     )), 
    ), 
    )); 
} 
+1

我試過了,它工作。謝謝。 – 2013-09-07 12:59:32

0

我會通過添加另一列來做到這一點。 TbColumnButton和TbButtonGroup都是小部件。你可以添加一個按鈕組

... 
array(
    'class'=>'bootstrap.widgets.TbButtonColumn', 
), 
array(
    'class'=>'bootstrap.widgets.TbButtonGroup', 
    ... 
),