2013-05-03 13 views
6

yii bootstrap + widget di TbButtonColumn + widget di TbButtonGroup

fronte a tale problema:yii bootstrap + widget di TbButtonColumn + widget di TbButtonGroup

tabella è formata dal widget TbGridView da bootstrap (da Yu-booster). Nella colonna TbButtonColumn I forma "modifica/cancella, ecc."

Ma un pulsante che voglio fare con l'effetto di Spalato menù a discesa 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

Non ho lavorato con TbGridView ma penso che è possibile estendere il widget TbGridView. Trova il luogo in cui l'autore originale disegna i pulsanti, quindi puoi sovrascrivere questa funzione per avviare il widget del pulsante personalizzato. L'input per questo widget deve essere fornito dalle opzioni di TbGridView. –

risposta

5

Ho sempre trovato che quando ho bisogno di rendere un elemento complesso in un GridView (soprattutto un widget) è più facile se chiami una funzione dal controller. Per esempio il vostro GridView avrebbe colonne definite in questo modo:

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

E poi nella vostra azione sarebbe simile a questa. Questo rende solo il widget di esempio da esempio Yii-booster pagina http://yii-booster.clevertech.biz/components.html#buttonDropdowns:

Modifica: Questo è anche utile a causa della funzione di richiamata renderButtons() accetta 2 parametri: $ dati e $ riga. È possibile utilizzare $ data per accedere ai dati dal fornitore di dati di gridview al fine di rendere dinamicamente un 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'=>'#'), 
     )), 
    ), 
    )); 
} 
+1

ho provato e ha funzionato. Grazie. –

0

Lo farei aggiungendo un'altra colonna. TbColumnButton abd TbButtonGroup sono entrambi widget. È possibile aggiungere un gruppo di pulsanti per

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