2012-11-29 51 views
0

我已經創建瞭如下的bootstrap.widgets.TbTabs,如何在客戶端動態添加新選項卡。是否有任何事件使用我可以添加新標籤就像下面的代碼中的「顯示」事件。在YiiBooster TbTabs部件中動態添加選項卡

<?php $this->widget('bootstrap.widgets.TbTabs', array(
    'id' => 'mytabs', 
    'type' => 'tabs', 
    'tabs' => array(
      array('id' => 'tab1', 'label' => 'Tab 1', 'content' => $this->renderPartial('tab1', null, true), 'active' => true), 
      array('id' => 'tab2', 'label' => 'Tab 2', 'content' => 'loading ....'), 
      array('id' => 'tab3', 'label' => 'Tab 3', 'content' => 'loading ....'), 
    ), 
    'events'=>array('shown'=>'js:loadContent') 
));?> 

回答

1

添加新的選項卡鏈接的標題,添加新的選項卡,顯示新的選項卡

$('#tabHeaders').append($('<li><a href="#newtab">New Tab</a></li>')); 
$('#tabContent').append($('<div class="tab-pane" id="newtab"></div>')); 
$('#newtab').tab('show'); 

注YiiBooster自動生成元素的ID,你需要使用適當的jQuery選擇器

+0

@請看看這個鏈接http://stackoverflow.com/questions/20700642/how-to-add-child-tab-onclick-of-button-in-yii-framework我們可以讓這個標籤結構在YiiBooster – Silviaa

1

有沒有,但並不意味着你不能自己創建它。在控制器

只需通過控制器通過 '標籤' 部分,像這樣

$tabs => array(
     array('id' => 'tab1', 'label' => 'Tab 1', 'content' => $this->renderPartial('tab1', null, true), 'active' => true), 
     array('id' => 'tab2', 'label' => 'Tab 2', 'content' => 'loading ....'), 
     array('id' => 'tab3', 'label' => 'Tab 3', 'content' => 'loading ....'), 
); 

$this->render('pageName', array('tabs' => $tabs)); 

在你視圖

<?php $this->widget('bootstrap.widgets.TbTabs', array(
    'id' => 'mytabs', 
    'type' => 'tabs', 
    'tabs' => $tabs, 
    'events'=>array('shown'=>'js:loadContent') 
));?> 

如果你想獲得類似的東西,但是在你的主佈局中,你可以創建一個可以延伸的模型m CActiveRecord並將選項卡存儲在數據庫中。之後,您可以在模型類中使用靜態方法來調用和檢索選項卡。然後在你的佈局視圖,你可以做這樣的事情:

<?php $this->widget('bootstrap.widgets.TbTabs', array(
    'id' => 'mytabs', 
    'type' => 'tabs', 
    'tabs' => Model::getTabs(), 
    'events'=>array('shown'=>'js:loadContent') 
));?> 
+0

,但我想要的東西是動態的標籤在客戶端。我有更新我的問題。你的方法適合於服務器端。接受:) –

1

我不認爲這是好的做法,renderPartial控制器內包含的視圖。

我發現這對我在視圖中工作:

$this->widget('bootstrap.widgets.TbTabs', array(
    'type'=>'tabs', 
    'tabs'=>array(
     array(// 
      'label'=>'Comments ('.$model->commentCount.')', 
      'content'=>$this->renderPartial('_comments', array('model'=>$model), true), 
     ), 
    ) 
)); 

顯然,對於這個工作,你需要「_comments.php」存在......