0

我已经创建了 bootstrap.widgets.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')
));?>
4

3 回答 3

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 回答
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 回答