yii CTabView пустой контент - PullRequest
0 голосов
/ 30 марта 2011

enter image description here

как скрыть пустую область, если у меня пустое содержимое вкладки?

1 Ответ

3 голосов
/ 30 марта 2011

Пустая область является результатом CSS по умолчанию, который использует Yii CTabView.В частности, этот CSS из web/js/source/jquery.yiitab.js в источниках Yii:

.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));

Лучшим решением было бы получить собственный виджет CustomTabView из CTabView и переопределить метод renderBody следующим образом:

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";
    }
}

Тогда вам нужен isEmptyTab метод.Этот будет работать для вкладок, содержание которых вы устанавливаете вручную.Если этого недостаточно, расширьте его так, как вам нужно:

private function isTabEmpty($tab)
{
    if(isset($tab['content']) && $tab['content'] == '')
    {
        return true;
    }

    return false;
}

Наконец, вам нужно немного CSS, чтобы ваши пустые вкладки выглядели иначе, например:

.yiiTab div.view.empty
{
    border: none;
    padding: 0;
    margin: 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...