CTreeView
| Пакет | system.web.widgets |
|---|---|
| Наследование | class CTreeView » CWidget » CBaseController » CComponent |
| С версии | 1.0 |
| Исходный код | framework/web/widgets/CTreeView.php |
Он включает в себя превосходный плагин для отображения дерева на 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.
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 |
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() |
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() |
public function run()
{
echo "</ul>";
}
Завершает выполнение виджета.
saveDataAsHtml() метод
public static string saveDataAsHtml(array $data) | ||
| $data | массив | данные для виджета дерева (см. data для возможной структуры данных). |
| {return} | строка | сгенерированный HTML для виджета дерева |
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-представление данных |
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