Spec-Zone.ru › Yii 1.1

CTabView

Пакет system.web.widgets
Наследование класс CTabView » CWidget » CBaseController » CComponent
С версии 1.0
Исходный код framework/web/widgets/CTabView.php
CTabView отображает содержимое на вкладках.

Одновременно видна только одна вкладка. Пользователи могут нажать на заголовок вкладки, чтобы перейти к другой вкладке с содержимым.

Переключение вкладок осуществляется с помощью JavaScript. Если JavaScript отключен, CTabView всё равно отображает содержимое соответствующим образом.

Для определения содержимого и структуры вкладок, настройте свойство tabs. Свойство tabs принимает массив, где идентификатор вкладки сопоставлен с определением вкладки. Каждое определение вкладки — это массив следующей структуры:
  • title: заголовок вкладки.
  • content: содержимое, которое будет отображаться на вкладке.
  • view: имя представления, которое будет отображено на этой вкладке. Представление будет рендериться с помощью метода CController::renderPartial текущего контроллера. Если указаны как 'content', так и 'view', будет использоваться 'content'.
  • url: URL, на который браузер пользователя будет перенаправлен при нажатии на эту вкладку.
  • data: массив (имя=>значение), который будет передан представлению, когда указан параметр 'view'.


Например, свойство tabs можно настроить следующим образом,
$this->widget('CTabView', array(
    'tabs'=>array(
        'tab1'=>array(
            'title'=>'tab 1 title',
            'view'=>'view1',
            'data'=>array('model'=>$model),
        ),
        'tab2'=>array(
            'title'=>'tab 2 title',
            'url'=>'http://www.yiiframework.com/',
        ),
    ),
));


По умолчанию активной будет первая вкладка. Чтобы активировать другую вкладку при первоначальной загрузке страницы, установите activeTab в идентификатор нужной вкладки.

Свойства

Свойство Тип Описание Определено
actionPrefix строка префикс для идентификаторов действий. CWidget
activeTab строка идентификатор вкладки, которая должна быть активной при первоначальной загрузке страницы. CTabView
controller CController Возвращает контроллер, к которому принадлежит этот виджет. CWidget
cssFile смешанный тип CSS-файл, используемый для виджета. CTabView
htmlOptions массив дополнительные HTML-опции для рендеринга тега контейнера. CTabView
id строка Возвращает ID виджета или генерирует новый, если требуется. CWidget
owner CBaseController Возвращает владельца/создателя этого виджета. CWidget
skin смешанный тип имя скина, который должен использоваться этим виджетом. CWidget
tabs массив определения вкладок. CTabView
viewData массив данные, которые будут переданы частичному представлению, рендерящемуся каждой вкладкой. CTabView
viewPath строка Возвращает директорию с файлами представлений для этого виджета. CWidget

Публичные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CWidget
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
actions() Возвращает список действий, используемых этим виджетом. CWidget
asa() Возвращает объект поведения с заданным именем. CComponent
attachBehavior() Прикрепляет поведение к этому компоненту. CComponent
attachBehaviors() Прикрепляет список поведений к компоненту. CComponent
attachEventHandler() Прикрепляет обработчик событий к событию. CComponent
beginCache() Начинает кэширование фрагмента. CBaseController
beginClip() Начинает запись клипа. CBaseController
beginContent() Начинает отображение содержимого, которое должно быть оформлено указанным представлением. CBaseController
beginWidget() Создаёт виджет и выполняет его. CBaseController
canGetProperty() Определяет, может ли свойство быть прочитано. CComponent
canSetProperty() Определяет, может ли свойство быть установлено. CComponent
createWidget() Создаёт виджет и инициализирует его. CBaseController
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает прикреплённое поведение. CComponent
disableBehaviors() Отключает все прикреплённые к этому компоненту поведения. CComponent
enableBehavior() Включает прикреплённое поведение. CComponent
enableBehaviors() Включает все прикреплённые к этому компоненту поведения. CComponent
endCache() Завершает кэширование фрагмента. CBaseController
endClip() Завершает запись клипа. CBaseController
endContent() Завершает отображение содержимого. CBaseController
endWidget() Завершает выполнение указанного виджета. CBaseController
evaluateExpression() Вычисляет PHP выражение или обратный вызов в контексте этого компонента. CComponent
getController() Возвращает контроллер, к которому принадлежит этот виджет. CWidget
getEventHandlers() Возвращает список прикреплённых обработчиков событий для события. CComponent
getId() Возвращает идентификатор виджета или генерирует новый, если требуется. CWidget
getOwner() Возвращает владельца/создателя этого виджета. CWidget
getViewFile() Ищет файл скрипта представления в соответствии с именем представления. CWidget
getViewPath() Возвращает директорию, содержащую файлы представлений для этого виджета. CWidget
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли прикреплённые обработчики для события с указанным именем. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует виджет. CWidget
raiseEvent() Вызывает событие. CComponent
registerClientScript() Регистрирует необходимый CSS и JavaScript. CTabView
registerCssFile() Регистрирует необходимый файл CSS. CTabView
render() Отображает представление. CWidget
renderFile() Отображает файл представления. CBaseController
renderInternal() Отображает файл представления. CBaseController
run() Выполняет виджет. CTabView
setId() Устанавливает идентификатор виджета. CWidget
widget() Создаёт виджет и выполняет его. CBaseController

Защищённые методы

Метод Описание Определено в
renderBody() Отображает часть тела. CTabView
renderHeader() Отображает заголовок. CTabView

Подробное описание свойств

activeTab свойство

public string $activeTab;

идентификатор вкладки, которая должна быть активирована при первоначальной загрузке страницы. Если не установлено, будет активирована первая вкладка.

cssFile свойство

public mixed $cssFile;

файл CSS, используемый для виджета. По умолчанию null, что означает использование файла по умолчанию, включенного вместе с виджетом. Если false, файл CSS не будет использоваться. В противном случае, указанный файл CSS будет включён при использовании этого виджета.

htmlOptions свойство

public array $htmlOptions;

дополнительные HTML опции, которые будут отображены в теге контейнера.

tabs свойство

public array $tabs;

Определения вкладок. Ключи массива — ID, а значения массива — соответствующее содержимое вкладок. Каждое значение массива должно быть массивом с следующими элементами:

  • title: заголовок вкладки. Вы должны убедиться, что он закодирован в HTML.
  • content: содержимое, отображаемое во вкладке.
  • view: имя представления, которое должно быть отображено в этой вкладке. Представление будет отрисовано с помощью метода CController::renderPartial текущего контроллера. Когда указаны оба параметра 'content' и 'view', 'content' будет иметь приоритет.
  • url: URL, на который будет перенаправлен браузер пользователя при нажатии на эту вкладку.
  • data: массив (имя=>значение), который будет передан в представление, когда указан параметр 'view'. Этот параметр доступен начиная с версии 1.1.1.
  • visible: отображать ли эту вкладку. По умолчанию — true. Этот параметр доступен начиная с версии 1.1.11.
array(
    'tab1'=>array(
          'title'=>'tab 1 title',
          'view'=>'view1',
    ),
    'tab2'=>array(
          'title'=>'tab 2 title',
          'url'=>'http://www.yiiframework.com/',
    ),
)

viewData свойство

public array $viewData;

данные, которые будут переданы в частичное представление, отрисовываемое каждой вкладкой.

Подробное описание методов

registerClientScript() метод

public void registerClientScript()
Исходный код: framework/web/widgets/CTabView.php#156 (показать)
public function registerClientScript()
{
    
$cs=Yii::app()->getClientScript();
    
$cs->registerCoreScript('yiitab');
    
$id=$this->getId();
    
$cs->registerScript('Yii.CTabView#'.$id,"jQuery(\"#{$id}\").yiitab();");

    if(
$this->cssFile!==false)
        
self::registerCssFile($this->cssFile);
}

Регистрирует необходимый CSS и JavaScript.

registerCssFile() метод

public static void registerCssFile(string $url=NULL)
$url строка URL CSS. Если null, будет использоваться URL по умолчанию.
Исходный код: framework/web/widgets/CTabView.php#171 (показать)
public static function registerCssFile($url=null)
{
    
$cs=Yii::app()->getClientScript();
    if(
$url===null)
        
$url=$cs->getCoreScriptUrl().'/yiitab/jquery.yiitab.css';
    
$cs->registerCssFile($url,'screen');
}

Регистрирует необходимый файл CSS.

renderBody() метод

protected void renderBody()
Исходный код: framework/web/widgets/CTabView.php#198 (показать)
protected function renderBody()
{
    foreach(
$this->tabs as $id=>$tab)
    {
        
$inactive=$id!==$this->activeTab?' style="display:none"' : '';
        echo 
"<div class=\"view\" id=\"{$id}\"{$inactive}>\n";
        if(isset(
$tab['content']))
            echo 
$tab['content'];
        elseif(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";
    }
}

Отрисовывает часть тела.

renderHeader() метод

protected void renderHeader()
Исходный код: framework/web/widgets/CTabView.php#182 (показать)
protected function renderHeader()
{
    echo 
"<ul class=\"tabs\">\n";
    foreach(
$this->tabs as $id=>$tab)
    {
        
$title=isset($tab['title'])?$tab['title']:'undefined';
        
$active=$id===$this->activeTab?' class="active"' : '';
        
$url=isset($tab['url'])?$tab['url']:"#{$id}";
        echo 
"<li><a href=\"{$url}\"{$active}>{$title}</a></li>\n";
    }
    echo 
"</ul>\n";
}

Отрисовывает заголовок.

run() метод

public void run()
Исходный код: framework/web/widgets/CTabView.php#122 (показать)
public function run()
{
    foreach(
$this->tabs as $id=>$tab)
        if(isset(
$tab['visible']) && $tab['visible']==false)
            unset(
$this->tabs[$id]);

    if(empty(
$this->tabs))
        return;

    if(
$this->activeTab===null || !isset($this->tabs[$this->activeTab]))
    {
        
reset($this->tabs);
        list(
$this->activeTab, )=each($this->tabs);
    }

    
$htmlOptions=$this->htmlOptions;
    if(isset(
$this->htmlOptions['id']))
        
$this->id=$this->htmlOptions['id'];
    else
        
$htmlOptions['id']=$this->id;
    if(!isset(
$htmlOptions['class']))
        
$htmlOptions['class']=self::CSS_CLASS;

    
$this->registerClientScript();

    echo 
CHtml::openTag('div',$htmlOptions)."\n";
    
$this->renderHeader();
    
$this->renderBody();
    echo 
CHtml::closeTag('div');
}

Выполняет виджет.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CTabView

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API