2013-05-03 5 views
6

Yii बूटस्ट्रैप + विजेट TbButtonColumn + विजेट TbButtonGroup

ऐसी समस्या का सामना:Yii बूटस्ट्रैप + विजेट TbButtonColumn + विजेट TbButtonGroup

टेबल बूटस्ट्रैप से (Yii-बूस्टर से) विजेट TbGridView से बना है। कॉलम में TbButtonColumn I "संपादित/हटाएं, आदि" बनाते हैं

लेकिन एक बटन मैं स्प्लिट के प्रभाव के साथ क्या करना चाहते हैं ड्रॉपडाउन 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'), 
    ), 
) 

और फिर आपकी कार्रवाई में ऐसा कुछ दिखाई देगा। यह सिर्फ वाईआई-बूस्टर उदाहरण पृष्ठ से उदाहरण विजेट प्रस्तुत करता है http://yii-booster.clevertech.biz/components.html#buttonDropdowns:

संपादित करें: यह कॉलबैक फ़ंक्शन रेंडरबटन() 2 पैरामीटर स्वीकार करता है: $ डेटा और $ पंक्ति स्वीकार करता है। विजेट को गतिशील रूप से प्रस्तुत करने के लिए आप ग्रिडव्यू के डेटा प्रदाता से डेटा तक पहुंचने के लिए $ डेटा का उपयोग कर सकते हैं।

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', 
    ... 
), 
संबंधित मुद्दे