Spec-Zone.ru › Yii 1.1

CTreeView

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

Он включает в себя превосходный плагин для отображения дерева на jQuery (http://bassistance.de/jquery-plugins/jquery-plugin-treeview/).

Чтобы использовать CTreeView, просто установите data с данными, которые вы хотите отобразить, и всё готово.

CTreeView также поддерживает динамическую загрузку данных через AJAX. Для этого установите url в URL, который может предоставлять данные дерева по запросу.

Свойства общего доступа

Свойство Тип Описание Определено в
actionPrefix string Префикс для идентификаторов действий. CWidget
animated string|integer Скорость анимации. CTreeView
collapsed boolean Указывает, должны ли все ветви дерева изначально быть свернутыми. CTreeView
control string Контейнер для управления деревом, позволяющий пользователю развернуть, свернуть и переключить все ветви одним щелчком. CTreeView
controller CController Возвращает контроллер, к которому относится данный виджет. CWidget
cookieId string Имя cookie для сохранения состояния через persist:"cookie". CTreeView
cssFile mixed Файл CSS, используемый для виджета. CTreeView
data array Данные, используемые для генерации содержимого дерева. CTreeView
htmlOptions array Дополнительные атрибуты HTML, которые будут добавлены к тегу UL. CTreeView
id string Возвращает ID виджета или генерирует новый, если запрошено. CWidget
options array Дополнительные опции, которые можно передать конструктору объекта js дерева. CTreeView
owner CBaseController Возвращает владельца/создателя данного виджета. CWidget
persist string Сохранить состояние дерева в cookie или в URL-адресе страницы. CTreeView
prerendered boolean Установить для пропуска рендеринга классов и div hitarea, предполагая, что это сделано на стороне сервера. CTreeView
skin mixed Имя используемой темы для виджета. CWidget
toggle string Обработчик события переключения ветви. CTreeView
unique boolean Разрешить открытие только одной ветви на одном уровне (закрытие соседних при открытии). CTreeView
url string|array URL для динамической загрузки дерева (через AJAX). CTreeView
viewPath string Возвращает директорию, содержащую файлы представления для этого виджета. CWidget

Защищенные свойства

Свойство Тип Описание Определено в
clientOptions array Опции JavaScript. CTreeView

Общедоступные методы

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__construct() Конструктор. CWidget
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. 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() Инициализирует виджет. CTreeView
raiseEvent() Вызывает событие. CComponent
render() Отображает представление. CWidget
renderFile() Отображает файл представления. CBaseController
renderInternal() Отображает файл представления. CBaseController
run() Завершает выполнение виджета. CTreeView
saveDataAsHtml() Генерирует узлы дерева в формате HTML из массива данных. CTreeView
saveDataAsJson() Сохраняет данные дерева в формате JSON. CTreeView
setId() Устанавливает идентификатор виджета. CWidget
widget() Создает виджет и выполняет его. CBaseController

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

Метод Описание Определено в
getClientOptions() Возвращает javascript параметры. CTreeView

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

animated свойство

public string|integer $animated;

Скорость анимации. Может быть одним из трех предопределенных значений ("медленно", "нормально" или "быстро") или числом миллисекунд для выполнения анимации (например, 1000). Если не задано, анимация не используется.

clientOptions свойство только для чтения

protected array getClientOptions()

javascript параметры

collapsed свойство

public boolean $collapsed;

Указывает, должны ли все ветви дерева начинаться в свернутом виде. По умолчанию false.

control свойство

public string $control;

Контейнер для древовидного управления, позволяющий пользователю раскрывать, сворачивать и переключать все ветви одним щелчком. В контейнере щелчок по первой гиперссылке свернёт дерево; второй гиперссылке — развернёт дерево; а третья — переключит дерево. Свойство должно быть корректным селектором jQuery (например, '#treecontrol', где 'treecontrol' — ID элемента 'div', содержащего гиперссылки.)

cookieId свойство

public string $cookieId;

Имя cookie, используемое при сохранении состояния с помощью persist:"cookie". По умолчанию 'treeview'.

cssFile свойство

public mixed $cssFile;

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

data свойство

public array $data;

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

  • text: строка, обязательная, HTML-текст, связанный с этим узлом.
  • expanded: булево, необязательное, расширен ли узел виджета дерева.
  • id: строка, необязательная, идентификатор, определяющий узел. Используется при динамической загрузке дерева (см. url).
  • hasChildren: булево, необязательное, по умолчанию false, указывает, должно ли нажатие на этот узел инициировать динамическую загрузку дополнительных узлов дерева с сервера. Свойство url должно быть установлено для корректной работы.
  • children: массив, необязательный, дочерние узлы этого узла.
  • htmlOptions: массив, дополнительные атрибуты HTML (см. CHtml::tag). Доступно с версии 1.1.7.
Примечание: всё, что находится между вызовами beginWidget и endWidget, также будет рассматриваться как содержимое виджета дерева, которое добавляется к содержимому, сгенерированному из этих данных.

htmlOptions свойство

public array $htmlOptions;

дополнительные атрибуты HTML, которые будут отображаться в теге UL. В стандартной CSS-стилизации виджета дерева определены следующие классы CSS, которые могут быть включены путём указания параметра 'class' здесь:

  • treeview-black
  • treeview-gray
  • treeview-red
  • treeview-famfamfam
  • filetree

options свойство

public array $options;

дополнительные параметры, которые могут быть переданы в конструктор объекта js treeview.

persist свойство

public string $persist;

Сохранять состояние дерева в куки или в местоположении страницы. Если установлено "location", ищет якорь, соответствующий location.href, и активирует соответствующую часть дерева. Идеально подходит для сохранения состояния с помощью href. Если установлено "cookie", сохраняет состояние дерева при каждом щелчке в куки и восстанавливает это состояние при загрузке страницы.

prerendered свойство

public boolean $prerendered;

Устанавливается для пропуска рендеринга классов и областей клика, предполагая, что это выполняется на стороне сервера. По умолчанию false.

toggle свойство

public string $toggle;

Обработчик событий при переключении ветви. Аргументы: "this" ссылается на UL, который был показан или скрыт.

unique свойство

public boolean $unique;

Устанавливается для разрешения открытия только одной ветви на одном уровне (закрытие родственных элементов при открытии). По умолчанию false.

url свойство

public string|array $url;

URL, на который виджет дерева может быть динамически загружен (с помощью AJAX). Смотрите CHtml::normalizeUrl для возможных форматов URL. Установка этого свойства активирует динамическую загрузку дерева. При отображении страницы браузер запросит этот URL с параметром GET под названием 'root' со значением 'source'. Скрипт на сервере должен затем сгенерировать необходимые данные дерева, соответствующие корню дерева (см. saveDataAsJson). Если у узла есть CSS-класс 'hasChildren', то раскрытие этого узла также вызовет динамическую загрузку его дочерних узлов. В этом случае значение параметра GET 'root' будет равным свойству 'id' узла.

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

getClientOptions() метод

protected array getClientOptions()
{return} массив параметры javascript
Исходный код: framework/web/widgets/CTreeView.php#167 (показать)
protected function getClientOptions()
{
    
$options=$this->options;
    foreach(array(
'url','animated','collapsed','control','unique','toggle','persist','cookieId','prerendered') as $name)
    {
        if(
$this->$name!==null)
            
$options[$name]=$this->$name;
    }
    return 
$options;
}

init() метод

public void init()
Исходный код: framework/web/widgets/CTreeView.php#134 (показать)
public function init()
{
    if(isset(
$this->htmlOptions['id']))
        
$id=$this->htmlOptions['id'];
    else
        
$id=$this->htmlOptions['id']=$this->getId();
    if(
$this->url!==null)
        
$this->url=CHtml::normalizeUrl($this->url);
    
$cs=Yii::app()->getClientScript();
    
$cs->registerCoreScript('treeview');
    
$options=$this->getClientOptions();
    
$options=$options===array()?'{}' : CJavaScript::encode($options);
    
$cs->registerScript('Yii.CTreeView#'.$id,"jQuery(\"#{$id}\").treeview($options);");
    if(
$this->cssFile===null)
        
$cs->registerCssFile($cs->getCoreScriptUrl().'/treeview/jquery.treeview.css');
    elseif(
$this->cssFile!==false)
        
$cs->registerCssFile($this->cssFile);

    echo 
CHtml::tag('ul',$this->htmlOptions,false,false)."\n";
    echo 
self::saveDataAsHtml($this->data);
}

Инициализирует виджет. Этот метод регистрирует все необходимые скрипты клиента и рендерит содержимое дерева.

run() метод

public void run()
Исходный код: framework/web/widgets/CTreeView.php#159 (показать)
public function run()
{
    echo 
"</ul>";
}

Завершает выполнение виджета.

saveDataAsHtml() метод

public static string saveDataAsHtml(array $data)
$data массив данные для виджета дерева (см. data для возможной структуры данных).
{return} строка сгенерированный HTML для виджета дерева
Исходный код: framework/web/widgets/CTreeView.php#183 (показать)
public static function saveDataAsHtml($data)
{
    
$html='';
    if(
is_array($data))
    {
        foreach(
$data as $node)
        {
            if(!isset(
$node['text']))
                continue;

            if(isset(
$node['expanded']))
                
$css=$node['expanded'] ? 'open' : 'closed';
            else
                
$css='';

            if(isset(
$node['hasChildren']) && $node['hasChildren'])
            {
                if(
$css!=='')
                    
$css.=' ';
                
$css.='hasChildren';
            }

            
$options=isset($node['htmlOptions']) ? $node['htmlOptions'] : array();
            if(
$css!=='')
            {
                if(isset(
$options['class']))
                    
$options['class'].=' '.$css;
                else
                    
$options['class']=$css;
            }

            if(isset(
$node['id']))
                
$options['id']=$node['id'];

            
$html.=CHtml::tag('li',$options,$node['text'],false);
            if(!empty(
$node['children']))
            {
                
$html.="\n<ul>\n";
                
$html.=self::saveDataAsHtml($node['children']);
                
$html.="</ul>\n";
            }
            
$html.=CHtml::closeTag('li')."\n";
        }
    }
    return 
$html;
}

Генерирует узлы дерева в формате HTML из массива данных.

saveDataAsJson() метод

public static string saveDataAsJson(array $data)
$data массив данные для виджета дерева (см. data для возможной структуры данных).
{return} строка JSON-представление данных
Исходный код: framework/web/widgets/CTreeView.php#238 (показать)
public static function saveDataAsJson($data)
{
    if(empty(
$data))
        return 
'[]';
    else
        return 
CJavaScript::jsonEncode($data);
}

Сохраняет данные дерева в формате JSON. Этот метод обычно используется при динамической загрузке дерева, когда серверу необходимо отправить клиенту данные динамического дерева.

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

Spec-Zone.ru

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