yii CTabView空内容

yii CTabView空内容,yii,Yii,如果选项卡内容为空,如何隐藏空白区域?空白区域是YiiCTabView使用的默认CSS的结果。具体来说,此CSS来自Yii源文件中的web/js/source/jquery.yiitab.js: .yiiTab div.view { border-left: 1px solid #4F81BD; border-right: 1px solid #4F81BD; border-bottom: 1px solid #4F81BD; padding: 8px;


如果选项卡内容为空,如何隐藏空白区域?

空白区域是Yii
CTabView使用的默认CSS的结果。具体来说,此CSS来自Yii源文件中的
web/js/source/jquery.yiitab.js

.yiiTab div.view
{
    border-left: 1px solid #4F81BD;
    border-right: 1px solid #4F81BD;
    border-bottom: 1px solid #4F81BD;
    padding: 8px;
    margin: 0;
}
如果您根本不包含任何CSS,您可以自己看到这一点,在这种情况下,选项卡将不显示任何样式:

$this->widget('CTabView', array('tabs'=> $tabs, 'cssFile' => false));
最好的解决方案是从
CTabView
派生您自己的小部件
CustomTabView
,并覆盖如下方法:

protected function renderBody()
{
    foreach($this->tabs as $id=>$tab)
    {
        $inactive=$id!==$this->activeTab?' style="display:none"' : '';
        $empty = $this->isEmptyTab($tab) ? ' empty' : '';

        echo "<div class=\"view{$empty}\" id=\"{$id}\"{$inactive}>\n";
        if(isset($tab['content']))
            echo $tab['content'];
        else if(isset($tab['view']))
        {
            if(isset($tab['data']))
            {
                if(is_array($this->viewData))
                        $data=array_merge($this->viewData, $tab['data']);
                else
                        $data=$tab['data'];
            }
            else
                $data=$this->viewData;
            $this->getController()->renderPartial($tab['view'], $data);
        }
        echo "</div><!-- {$id} -->\n";
    }
}
最后,您需要一些CSS来使空选项卡以不同的方式显示,例如:

.yiiTab div.view.empty
{
    border: none;
    padding: 0;
    margin: 0;
}

空白区域是Yii
CTabView
使用的默认CSS的结果。具体来说,此CSS来自Yii源文件中的
web/js/source/jquery.yiitab.js

.yiiTab div.view
{
    border-left: 1px solid #4F81BD;
    border-right: 1px solid #4F81BD;
    border-bottom: 1px solid #4F81BD;
    padding: 8px;
    margin: 0;
}
如果您根本不包含任何CSS,您可以自己看到这一点,在这种情况下,选项卡将不显示任何样式:

$this->widget('CTabView', array('tabs'=> $tabs, 'cssFile' => false));
最好的解决方案是从
CTabView
派生您自己的小部件
CustomTabView
,并覆盖如下方法:

protected function renderBody()
{
    foreach($this->tabs as $id=>$tab)
    {
        $inactive=$id!==$this->activeTab?' style="display:none"' : '';
        $empty = $this->isEmptyTab($tab) ? ' empty' : '';

        echo "<div class=\"view{$empty}\" id=\"{$id}\"{$inactive}>\n";
        if(isset($tab['content']))
            echo $tab['content'];
        else if(isset($tab['view']))
        {
            if(isset($tab['data']))
            {
                if(is_array($this->viewData))
                        $data=array_merge($this->viewData, $tab['data']);
                else
                        $data=$tab['data'];
            }
            else
                $data=$this->viewData;
            $this->getController()->renderPartial($tab['view'], $data);
        }
        echo "</div><!-- {$id} -->\n";
    }
}
最后,您需要一些CSS来使空选项卡以不同的方式显示,例如:

.yiiTab div.view.empty
{
    border: none;
    padding: 0;
    margin: 0;
}