0

以下のようにbootstrap.widgets.TbTabsを作成しましたが、クライアント側で新しいタブを動的に追加するにはどうすればよいですか。以下のコードの「shown」イベントのように、新しいタブを追加できるイベントはありますか。

<?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')
));?>
4

3 に答える 3

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')
));?>

同様のことをメインレイアウトで実現したい場合は、CActiveRecordから拡張し、データベースにタブを格納するモデルを作成できます。その後、モデルクラスの静的メソッドを使用して、タブを呼び出して取得できます。次に、レイアウトビューで、次のような操作を実行できます。

<?php $this->widget('bootstrap.widgets.TbTabs', array(
    'id' => 'mytabs',
    'type' => 'tabs',
    'tabs' => Model::getTabs(),
    'events'=>array('shown'=>'js:loadContent')
));?>
于 2012-11-30T09:27:50.393 に答える
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セレクターを使用する必要があります

于 2012-12-01T07:34:30.263 に答える
1

コントローラ内に含まれているビューを部分的にレンダリングするのは良い習慣ではないと思います。

私はこれがビューで私のために働くことを見つけました:

$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」が存在する必要があります...

于 2013-02-08T17:28:03.893 に答える