2013-05-03 9 views
6

のYiiブートストラップ+ウィジェットTbButtonColumn +ウィジェットTbButtonGroupそのような問題に直面

のYiiブートストラップ+ウィジェットTbButtonColumn +ウィジェットTbButtonGroup

表は、ブートストラップから(Yiiのブースタからの)ウィジェットTbGridViewによって形成されています。列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オプションから指定する必要があります。 –

答えて

5

の影響でやりたい

しかし、一つのボタンには、私はいつも、私はGridViewの中に複雑な要素(特にウィジェット)をレンダリングする必要がある場合、それは簡単だということがわかりましたコントローラーから関数を呼び出す場合。

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

をしてからのアクションで次のようになります。たとえば、あなたのGridViewは次のように定義された列を持っているでしょう。これはちょうどYii-boosterサンプルページの例ウィジェットをレンダリングします。http://yii-booster.clevertech.biz/components.html#buttonDropdowns

編集:これは、コールバック関数renderButtons()が$ dataと$ rowの2つのパラメータを受け入れるので便利です。ウィジェットを動的にレンダリングするために、$ dataを使用してグリッドビューのデータプロバイダからデータにアクセスできます。

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

私はそれを試して、それが働いた。ありがとうございました。 –

0

これは別の列を追加することで行います。どちらのTbColumnButton abd TbButtonGroupも両方のウィジェットです。

... 
array(
    'class'=>'bootstrap.widgets.TbButtonColumn', 
), 
array(
    'class'=>'bootstrap.widgets.TbButtonGroup', 
    ... 
), 
関連する問題