2013-05-03 5 views
6

yii ładujący + widget TbButtonColumn + widget TbButtonGroup

Wobec tego problemu:yii ładujący + widget TbButtonColumn + widget TbButtonGroup

Tabela powstaje przez TbGridView widżet bootstrap (Z yii-przypominającej). W kolumnie TbButtonColumn utworzę "edit/delete, etc."

jeden przycisk chcę zrobić z efektem Split Ale 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', 
      ), 
     ) 
    ), 
)); 
+0

Nie pracowałem z TbGridView, ale myślę, że możesz rozszerzyć widżet TbGridView. Znajdź miejsce, w którym oryginalny autor rysuje przyciski, a następnie możesz zastąpić tę funkcję, aby uruchomić niestandardowy widget przycisku. Dane wejściowe do tego widgetu powinny być podane z opcji TbGridView. –

Odpowiedz

5

Zawsze uważałem, że kiedy trzeba renderować skomplikowany element w GridView (zwłaszcza widget) Łatwiej jeśli wywołasz funkcję z kontrolera. Na przykład w widoku siatki można zdefiniować kolumny w następujący sposób:

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

A następnie w akcji będzie wyglądać mniej więcej tak. Spowoduje to wyświetlenie przykładowego widżetu z przykładowej strony Yii-booster. Edytowanie: Jest to również pomocne z powodu funkcji wywołania zwrotnego. RenderButtons() akceptuje 2 parametry: $ dane i $ wiersz. Możesz użyć danych $, aby uzyskać dostęp do danych od dostawcy danych gridview w celu dynamicznego renderowania widżetu.

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

próbowałem go i zadziałało. Dziękuję Ci. –

0

Zrobiłbym to, dodając kolejną kolumnę. Zarówno TbColumnButton abd TbButtonGroup są oba widgety. Możesz dodać grupę przycisków przez

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