Класс TreeBehavior
Поведение дерева.
Позволяет объекту модели действовать как узловому дереву. Использует модифицированную обход дерева по принципу прямого обхода.
- Объект
-
ModelBehavior -
TreeBehavior
Авторские права: Авторские права (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: Лицензия MIT
См.: http://en.wikipedia.org/wiki/Tree_traversal
Ссылка: http://book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html
Расположено в Cake/Model/Behavior/TreeBehavior.php
Подробное описание метода
_getMaxисходный код защищенное
_getMax( Model $Model , string $scope , string $right , integer $recursive -1 , boolean $created false )
Получить максимальное значение индекса в таблице.
Параметры
-
Model$Model - Экземпляр модели.
- строка
$scope - Условия ограничения.
- строка
$right - Правое значение
- целое число
$recursiveнеобязательно -1 - Рекурсивное нахождение значения.
- логическое
$createdнеобязательно false - Является ли это новой записью.
Возвращает
integerint
_getMinисходный код защищенное
_getMin( Model $Model , string $scope , string $left , integer $recursive -1 )
Получить минимальное значение индекса в таблице.
Параметры
-
Model$Model - Экземпляр модели.
- строка
$scope - Условия ограничения.
- строка
$left - Левое значение.
- целое число
$recursiveнеобязательно -1 - Рекурсивное нахождение значения.
Возвращает
integerint
_getNodeисходный код защищенное
_getNode( Model $Model , integer|string $id )
Возвращает один узел из дерева по его первичному ключу
Параметры
-
Model$Model - Модель, использующая это поведение
- целое число|строка
$id - Идентификатор записи для чтения
Возвращает
array|booleanПрочитанная запись или false
_getOptionsисходный код защищенное
_getOptions( array $arg )
Удобный метод для создания стандартных опций find() из $arg, если это ассоциативный массив.
Параметры
- массив
$arg - Массив
Возвращает
arrayМассив опций
_recoverByParentIdисходный код защищенное
_recoverByParentId( Model $Model , integer $counter 1 , mixed $parentId null )
_recoverByParentId
Вспомогательная рекурсивная функция, используемая в recover
Параметры
-
Model$Model - Экземпляр модели.
- целое число
$counterнеобязательно 1 - Счетчик
- смешанный
$parentIdнеобязательно null - Идентификатор родительской записи
Возвращает
integerсчетчик
_setChildrenLevelисходный код защищенное
_setChildrenLevel( Model $Model , integer|string $id )
Установить уровень для потомков.
Параметры
-
Model$Model - Модель, использующая это поведение.
- целое число|строка
$id - Идентификатор записи
_setParentисходный код защищенное
_setParent( Model $Model , integer|string $parentId null , boolean $created false )
Устанавливает родителя заданного узла
Параметр force используется для переопределения логики «не изменять родителя на текущего родителя» в случае восстановления поврежденной таблицы или создания новых узлов. В противном случае он всегда должен быть false. На самом деле, этот метод мог бы быть приватным, так как вызов save с установленным parent_id также вызывает setParent
Параметры
-
Model$Model - Модель, использующая это поведение
- целое число|строка
$parentIdнеобязательно null - Идентификатор родительской записи
- логическое
$createdнеобязательно false - True, если запись только что создана, иначе false.
Возвращает
booleantrue при успехе, false при ошибке
_syncисходный код защищенное
_sync( Model $Model , integer $shift , string $dir '+' , array $conditions array() , boolean $created false , string $field 'both' )
Метод синхронизации таблицы.
Обрабатывает операции синхронизации таблицы, учитывая область действия поведения.
Параметры
-
Model$Model - Экземпляр модели.
- целое число
$shift - Смещение.
- строка
$dirнеобязательно '+' - Направление.
- массив
$conditionsнеобязательно array() - Условия.
- логическое
$createdнеобязательно false - Является ли это новой записью.
- строка
$fieldнеобязательно 'both' - Тип поля.
afterDeleteисходный код общедоступный
afterDelete( Model $Model )
Метод после удаления.
Удалит текущий узел и все дочерние узлы с помощью метода deleteAll и синхронизирует таблицу
Параметры
-
Model$Model - Модель, использующая это поведение
Возвращает
booleantrue для продолжения, false для прерывания удаления
Переопределяет
ModelBehavior::afterDelete() afterSaveисходный код общедоступный
afterSave( Model $Model , boolean $created , array $options array() )
Метод после сохранения. Вызывается после всех сохранений
Переопределен для прозрачного управления установкой полей lft и rght, только если поле parent включено в параметры, которые должны быть сохранены.
Параметры
-
Model$Model - Модель, использующая это поведение.
- логическое
$created - указывает, был ли сохраненный узел создан или обновлен
- массив
$optionsнеобязательно array() - Опции, переданные из Model::save().
Возвращает
booleantrue при успехе, false при ошибке
Переопределяет
ModelBehavior::afterSave() beforeDeleteисходный код общедоступный
beforeDelete( Model $Model , boolean $cascade true )
Сохраняет запись, которую собираются удалить.
Используется для удаления дочерних узлов в afterDelete.
Параметры
-
Model$Model - Модель, использующая это поведение.
- логическое
$cascadeнеобязательно true - Если true, записи, зависящие от этой записи, также будут удалены
Возвращает
booleanbool
Переопределяет
ModelBehavior::beforeDelete() beforeFindисходный код общедоступный
beforeFind( Model $Model , array $query )
Выполняется перед операцией find()
Параметры
-
Model$Model - Модель, использующая это поведение
- массив
$query - Параметры запроса, установленные cake
Возвращает
arrayмассив
Переопределяет
ModelBehavior::beforeFind() beforeSavesource public
beforeSave( Model $Model , array $options array() )
Метод перед сохранением. Вызывается перед всеми сохранениями.
Переопределен для прозрачного управления установкой полей lft и rght, только если поле parent включено в параметры для сохранения. Для вновь созданных узлов без родителя значения полей left и right устанавливаются непосредственно этим методом, минуя логику setParent.
Параметры
-
Model$Model - Модель, использующая данный метод
- массив
$optionsнеобязательно массив() - Параметры, передаваемые из Model::save().
Возвращает
booleantrue для продолжения, false для прерывания сохранения
См. также
Model::save()Переопределяет
ModelBehavior::beforeSave() childCountsource public
childCount( Model $Model , integer|string|boolean $id null , boolean $direct false )
Получить количество дочерних узлов
Если параметр direct установлен в true, учитываются только непосредственные дочерние узлы (на основе поля parent_id). Если для параметра id передано false, учитываются все узлы верхнего уровня или все узлы.
Параметры
-
Model$Model - Модель, использующая данный метод
- целое число|строка|булево
$idнеобязательно null - Идентификатор записи для чтения или false для чтения всех узлов верхнего уровня
- булево
$directнеобязательно false - Учитывать ли прямых или всех дочерних элементов
Возвращает
integerколичество дочерних узлов
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::childCountchildrensource public
children( Model $Model , integer|string $id null , boolean $direct false , string|array $fields null , string $order null , integer $limit null , integer $page 1 , integer $recursive null )
Получить дочерние узлы текущей модели
Если параметр direct установлен в true, возвращаются только непосредственные дочерние узлы (на основе поля parent_id). Если для параметра id передано false, учитываются узлы верхнего уровня или все (в зависимости от параметра direct).
Параметры
-
Model$Model - Модель, использующая данный метод
- целое число|строка
$idнеобязательно null - Идентификатор записи для чтения
- булево
$directнеобязательно false - Возвращать только непосредственных или всех дочерних элементов
- строка|массив
$fieldsнеобязательно null - Либо одно строковое имя поля, либо массив имён полей
- строка
$orderнеобязательно null - SQL условия ORDER BY (например, "price DESC" или "name ASC"), по умолчанию используется порядок дерева
- целое число
$limitнеобязательно null - SQL LIMIT, для расчета элементов на страницу.
- целое число
$pageнеобязательно 1 - Номер страницы для доступа к постраничным данным
- целое число
$recursiveнеобязательно null - Глубина уровней вложенности для получения связанных записей
Возвращает
arrayМассив дочерних узлов
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::childrenformatTreeListsource public
formatTreeList( Model $Model , array $results , array $options array() )
Форматирует результат вызова find() в иерархический массив, используемый для HTML-списков выбора.
Обратите внимание, что при использовании собственного вызова find() ожидается, что порядок будет «left» по возрастанию, чтобы получить тот же результат, что и при непосредственном использовании generateTreeList().
Параметры:
- 'keyPath': Путь к ключу, например "{n}.Post.id"
- 'valuePath': Путь к значению, например "{n}.Post.title"
- 'spacer': Символ или символы, которые будут повторяться
Параметры
-
Model$Model - Модель, использующая данный метод
- массив
$results - Результирующий массив вызова find()
- массив
$optionsнеобязательно массив() - Параметры
Возвращает
arrayАссоциативный массив записей, где id — ключ, а поле отображения — значение
generateTreeListsource public
generateTreeList( Model $Model , string|array $conditions null , string $keyPath null , string $valuePath null , string $spacer '_' , integer $recursive null )
Удобный метод для возвращения иерархического массива, используемого для HTML-списков выбора.
Параметры
-
Model$Model - Модель, использующая данный метод
- строка|массив
$conditionsнеобязательно null - SQL условия в виде строки или массива ('поле' =>'значение',...)
- строка
$keyPathнеобязательно null - Путь к ключу, например "{n}.Post.id"
- строка
$valuePathнеобязательно null - Путь к значению, например "{n}.Post.title"
- строка
$spacerнеобязательно '_' - Символ или символы, которые будут повторяться
- целое число
$recursiveнеобязательно null - Глубина уровней вложенности для получения связанных записей
Возвращает
arrayАссоциативный массив записей, где id — ключ, а поле отображения — значение
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::generateTreeListgetLevelsource public
getLevel( Model $Model , integer|string $id null )
Возвращает уровень вложенности узла в дереве.
Параметры
-
Model$Model - Модель, использующая данный метод
- целое число|строка
$idнеобязательно null - Первичный ключ записи, для которой нужно получить уровень.
Возвращает
integer|booleanЦелое число уровня или false, если узел не существует.
getParentNodesource public
getParentNode( Model $Model , integer|string $id null , string|array $fields null , integer $recursive null )
Получить родительский узел
считывает идентификатор родителя и возвращает этот узел
Параметры
-
Model$Model - Модель, использующая данный метод
- целое число|строка
$idнеобязательно null - Идентификатор записи для чтения
- строка|массив
$fieldsнеобязательно null - Поля для получения
- целое число
$recursiveнеобязательно null - Глубина уровней вложенности для получения связанных записей
Возвращает
array|booleanМассив данных для родительского узла
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::getParentNodegetPathsource public
getPath( Model $Model , integer|string $id null , string|array $fields null , integer $recursive null )
Получить путь к заданному узлу
Параметры
-
Model$Model - Модель, использующая данный метод
- целое число|строка
$idнеобязательно null - Идентификатор записи для чтения
- строка|массив
$fieldsнеобязательно null - Либо одно строковое имя поля, либо массив имён полей
- целое число
$recursiveнеобязательно null - Глубина уровней вложенности для получения связанных записей
Возвращает
arrayМассив узлов от самого верхнего родителя до текущего узла
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::getPathmoveDownsource public
moveDown( Model $Model , integer|string $id null , integer|boolean $number 1 )
Переместить узел вниз без изменения родителя.
Если узел является последним дочерним элементом или является узлом верхнего уровня без последующего узла, этот метод вернёт false
Параметры
-
Model$Model - Модель, использующая этот бихевиор
- integer|string
$idнеобязательно null - ID записи, которую нужно переместить
- integer|boolean
$numberнеобязательно 1 - На сколько позиций нужно переместить узел или true для перемещения в последнюю позицию
Возвращает
booleantrue при успехе, false при неудаче
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::moveDownmoveUpsource public
moveUp( Model $Model , integer|string $id null , integer|boolean $number 1 )
Переместить узел вверх без изменения родителя.
Если узел является первым дочерним элементом или является узлом верхнего уровня без предыдущего узла, этот метод вернёт false
Параметры
-
Model$Model - Модель, использующая этот бихевиор
- integer|string
$idнеобязательно null - ID записи, которую нужно переместить
- integer|boolean
$numberнеобязательно 1 - На сколько позиций нужно переместить узел, или true для перемещения в первую позицию
Возвращает
booleantrue при успехе, false при неудаче
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::moveUprecoversource public
recover( Model $Model , string $mode 'parent' , string|integer $missingParentAction null )
Восстановление повреждённого дерева.
Параметр mode используется для указания источника информации, который является действительным/корректным. Противоположный источник данных будет заполнен на основе этого источника информации. Например, если поля MPTT повреждены или пусты, с $mode 'parent' значения поля parent_id будут использованы для заполнения полей left и right. Параметр missingParentAction применим только к режиму "parent" и определяет, что делать, если поле parent содержит id, который отсутствует.
Параметры
-
Model$Model - Модель, использующая этот бихевиор
- string
$modeнеобязательно 'parent' - parent или tree
- string|integer
$missingParentActionнеобязательно null - 'return' для ничего не делать и вернуть, 'delete' для удаления или id родителя для установки как parent_id
Возвращает
booleantrue при успехе, false при неудаче
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::recoverremoveFromTreesource public
removeFromTree( Model $Model , integer|string $id null , boolean $delete false )
Удалить текущий узел из дерева и изменить родителя всех дочерних элементов на один уровень выше.
Если параметр delete равен false, узел станет новым узлом верхнего уровня. В противном случае узел будет удалён после изменения родителей дочерних элементов.
Параметры
-
Model$Model - Модель, использующая этот бихевиор
- integer|string
$idнеобязательно null - ID записи, которую нужно удалить
- boolean
$deleteнеобязательно false - Удалить узел после изменения родителей дочерних элементов (если таковые имеются)
Возвращает
booleantrue при успехе, false при неудаче
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::removeFromTreereordersource public
reorder( Model $Model , array $options array() )
Метод переупорядочивания.
Переупорядочивает узлы (и дочерние узлы) дерева в соответствии с полем и направлением, указанными в параметрах. Этот метод не изменяет родителя ни одного узла.
Требуется действительное дерево, по умолчанию оно проверяется перед началом.
Параметры:
- 'id' id записи, используемой в качестве корневого узла для переупорядочивания
- 'field' Поле, используемое в переупорядочивании, по умолчанию displayField
- 'order' Направление упорядочивания, либо DESC, либо ASC (по умолчанию ASC)
- 'verify' Проверять ли дерево перед переупорядочиванием. По умолчанию true.
Параметры
-
Model$Model - Модель, использующая этот бихевиор
- array
$optionsнеобязательно array() - Массив опций для использования при переупорядочивании.
Возвращает
booleantrue при успехе, false при неудаче
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::reordersetupsource public
setup( Model $Model , array $config array() )
Инициализировать бихевиор Tree
Параметры
-
Model$Model - модель, использующая этот бихевиор
- array
$configнеобязательно array() - массив параметров конфигурации.
Переопределяет
ModelBehavior::setup() verifysource public
verify( Model $Model )
Проверить, является ли текущее дерево валидным.
Возвращает true, если дерево валидно, иначе массив (тип, некорректный индекс left/right, сообщение)
Параметры
-
Model$Model - Модель, использующая этот бихевиор
Возвращает
mixedtrue, если дерево валидно или пусто, иначе массив (тип ошибки [индекс, узел], [некорректный индекс left/right, id узла], сообщение)
Ссылка
http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::verifyМетоды, унаследованные от ModelBehavior
_addToWhitelistsource protected
_addToWhitelist( Model $model , string $field )
Если свойство whitelist модели $model не пустое, $field будет добавлен в него. Примечание: этот метод следует использовать только в beforeValidate или beforeSave, чтобы убедиться, что он изменяет whitelist только для текущей операции сохранения. Также убедитесь, что вы явно устанавливаете значение поля, которое вы разрешаете.
Параметры
-
Model$model - Модель, использующая этот бихевиор
- string
$field - Поле, которое нужно добавить в whitelist модели $model
afterFindsource public
afterFind( Model $model , mixed $results , boolean $primary false )
Обработчик после поиска. Может использоваться для изменения результатов, возвращаемых методом find.
Параметры
-
Model$model - Модель, использующая этот бихевиор
- mixed
$results - Результаты операции поиска
- boolean
$primaryнеобязательно false - Является ли эта модель запрошенной напрямую (в отличие от запроса в качестве ассоциации)
Возвращает
mixedЗначение массива заменит значение $results - любое другое значение будет проигнорировано.
afterValidatesource public
afterValidate( Model $model )
afterValidate вызывается сразу после проверки данных модели, вы можете использовать этот обработчик для выполнения любых необходимых действий по очистке или подготовке данных.
Параметры
-
Model$model - Модель, использующая этот бихевиор
Возвращает
mixedFalse остановит передачу этого события другим бихевиорам
beforeValidatesource public
beforeValidate( Model $model , array $options array() )
Метод beforeValidate вызывается перед валидацией модели. Вы можете использовать этот обратный вызов для добавления правил валидации поведения в массив validate модели. Возврат false позволит вам заставить валидацию завершиться неудачно.
Параметры
-
Model$model - Модель, использующая это поведение
- массив
$optionsнеобязательно array() - Параметры, переданные из Model::save().
Возвращаемое значение
mixedFalse или null прервут операцию. Любой другой результат продолжит выполнение.
См. также
Model::save()cleanupsource public
cleanup( Model $model )
Очистка любой инициализации, проведённой этим поведением в модели. Вызывается при динамической отвязке поведения от модели с помощью Model::detach().
Параметры
-
Model$model - Модель, использующая это поведение
См. также
BehaviorCollection::detach()onErrorsource public
onError( Model $model , string $error )
Обработчик ошибок источника данных
Параметры
-
Model$model - Модель, использующая это поведение
- строка
$error - Ошибка, сгенерированная в источнике данных
Методы, унаследованные от Object
_mergeVarssource protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Объединяет свойство $property этого объекта со свойством в определении $class. Значение свойства этого класса будет объединено поверх значения $class'
Это обеспечивает некоторую DRY-магию CakePHP. Если вы хотите её отключить, переопределите этот метод как пустую функцию.
Параметры
- массив
$properties - Название свойств для объединения.
- строка
$class - Класс для объединения свойства с.
- логическое значение
$normalizeнеобязательно true - Установите в значение true, чтобы запустить свойства через Hash::normalize() перед объединением.
_setsource protected
_set( array $properties array() )
Позволяет установить несколько свойств объекта в одной строке кода. Будут установлены только свойства, являющиеся частью объявления класса.
Параметры
- массив
$propertiesнеобязательно array() - Ассоциативный массив, содержащий свойства и соответствующие значения.
_stopsource protected
_stop( integer|string $status 0 )
Остановить выполнение текущего скрипта. Оборачивает exit(), что упрощает тестирование.
Параметры
- целое число/строка
$statusнеобязательно 0 - см. http://php.net/exit для значений
dispatchMethodsource public
dispatchMethod( string $method , array $params array() )
Вызывает метод этого объекта с заданными параметрами. Предоставляет ОО-оболочку для call_user_func_array
Параметры
- строка
$method - Имя вызываемого метода
- массив
$paramsнеобязательно array() - Список параметров для использования при вызове $method
Возвращаемое значение
mixedВозвращает результат вызова метода
logsource public
log( string $msg , integer $type LOG_ERR , null|string|array $scope null )
Удобный метод для записи сообщения в CakeLog. Подробнее о записи в лог см. CakeLog::write().
Параметры
- строка
$msg - Сообщение для лога
- целое число
$typeнеобязательно LOG_ERR - Константа типа ошибки. Определена в app/Config/core.php.
- null|строка|массив
$scopeнеобязательно null - Область(и), в которой создается сообщение журнала. Подробнее о областях ведения журнала см. CakeLog::config().
Возвращаемое значение
booleanРезультат записи в лог
requestActionsource public
requestAction( string|array $url , array $extra array() )
Вызывает метод контроллера из любой точки. Может использоваться для связи контроллеров или интеграции плагинов в основное приложение. requestAction может возвращать рендеренные представления или значение, возвращаемое действиями контроллера.
Под капотом этот метод использует Router::reverse() для преобразования параметра $url в строковый URL. Вы должны использовать форматы URL, совместимые с Router::reverse().
Передача данных POST и GET
Данные POST и GET могут быть смоделированы в requestAction. Используйте $extra['url'] для данных GET. Параметр $extra['data'] позволяет моделировать данные POST.
Параметры
- строка|массив
$url - URL в виде строки или массива. В отличие от других массивов URL в CakePHP, этот URL не будет автоматически обрабатывать переданные и именованные аргументы в параметре $url.
- массив
$extraнеобязательно array() - Если массив содержит ключ "return", он устанавливает AutoRender в значение true. Также может использоваться для отправки данных GET/POST и именованных/переданных аргументов.
Возвращаемое значение
mixedБулево значение true или false при успехе/неудаче, или содержимое рендерного действия, если 'return' установлен в $extra.
toStringsource public
toString( )
Преобразование объекта в строку. Каждый класс может переопределить этот метод по мере необходимости.
Возвращаемое значение
stringИмя этого класса
Краткое описание свойств
Свойства, унаследованные от ModelBehavior
$mapMethodssource
public массив
Позволяет сопоставить регулярные выражения, совместимые с preg, с общедоступными или закрытыми методами в этом классе, где ключ массива — регулярное выражение, разделяемое символом /, а значение — метод класса. Похоже на функциональность магических методов findBy* / findAllBy*.
array() $settingssource
public массив
Содержит настройки конфигурации для использования с отдельными объектами моделей. Это используется, потому что если несколько моделей используют это поведение, каждый будет использовать один и тот же экземпляр объекта. Настройки отдельной модели должны храниться в ассоциативном массиве, индексированном по имени модели.
См. также
Model::$aliasarray()
© 2005–2016 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
http://api.cakephp.org/2.7/class-TreeBehavior.html