Spec-Zone.ru › CakePHP 2.7

Класс TreeBehavior

Поведение дерева.

Позволяет объекту модели действовать как узловому дереву. Использует модифицированную обход дерева по принципу прямого обхода.

Объект
Extended by ModelBehavior
Extended by TreeBehavior
Пакет: Cake\Модель\Поведение
Авторские права: Авторские права (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
Является ли это новой записью.

Возвращает

integer
int

_getMinисходный код защищенное

_getMin( Model $Model , string $scope , string $left , integer $recursive -1 )

Получить минимальное значение индекса в таблице.

Параметры

Model $Model
Экземпляр модели.
строка $scope
Условия ограничения.
строка $left
Левое значение.
целое число $recursive необязательно -1
Рекурсивное нахождение значения.

Возвращает

integer
int

_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.

Возвращает

boolean
true при успехе, 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
Модель, использующая это поведение

Возвращает

boolean
true для продолжения, false для прерывания удаления

Переопределяет

ModelBehavior::afterDelete()

afterSaveисходный код общедоступный

afterSave( Model $Model , boolean $created , array $options array() )

Метод после сохранения. Вызывается после всех сохранений

Переопределен для прозрачного управления установкой полей lft и rght, только если поле parent включено в параметры, которые должны быть сохранены.

Параметры

Model $Model
Модель, использующая это поведение.
логическое $created
указывает, был ли сохраненный узел создан или обновлен
массив $options необязательно array()
Опции, переданные из Model::save().

Возвращает

boolean
true при успехе, false при ошибке

Переопределяет

ModelBehavior::afterSave()

beforeDeleteисходный код общедоступный

beforeDelete( Model $Model , boolean $cascade true )

Сохраняет запись, которую собираются удалить.

Используется для удаления дочерних узлов в afterDelete.

Параметры

Model $Model
Модель, использующая это поведение.
логическое $cascade необязательно true
Если true, записи, зависящие от этой записи, также будут удалены

Возвращает

boolean
bool

Переопределяет

ModelBehavior::beforeDelete()

beforeFindисходный код общедоступный

beforeFind( Model $Model , array $query )

Выполняется перед операцией find()

Параметры

Model $Model
Модель, использующая это поведение
массив $query
Параметры запроса, установленные cake

Возвращает

array
массив

Переопределяет

ModelBehavior::beforeFind()
END_OF_DOCUMENT_MARKER ```

beforeSavesource public

beforeSave( Model $Model , array $options array() )

Метод перед сохранением. Вызывается перед всеми сохранениями.

Переопределен для прозрачного управления установкой полей lft и rght, только если поле parent включено в параметры для сохранения. Для вновь созданных узлов без родителя значения полей left и right устанавливаются непосредственно этим методом, минуя логику setParent.

Параметры

Model $Model
Модель, использующая данный метод
массив $options необязательно массив()
Параметры, передаваемые из Model::save().

Возвращает

boolean
true для продолжения, 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::childCount

childrensource 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::children

formatTreeListsource 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::generateTreeList

getLevelsource 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::getParentNode

getPathsource 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::getPath

moveDownsource 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 для перемещения в последнюю позицию

Возвращает

boolean
true при успехе, false при неудаче

Ссылка

http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::moveDown

moveUpsource 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 для перемещения в первую позицию

Возвращает

boolean
true при успехе, false при неудаче

Ссылка

http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::moveUp

recoversource 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

Возвращает

boolean
true при успехе, false при неудаче

Ссылка

http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::recover

removeFromTreesource public

removeFromTree( Model $Model , integer|string $id null , boolean $delete false )

Удалить текущий узел из дерева и изменить родителя всех дочерних элементов на один уровень выше.

Если параметр delete равен false, узел станет новым узлом верхнего уровня. В противном случае узел будет удалён после изменения родителей дочерних элементов.

Параметры

Model $Model
Модель, использующая этот бихевиор
integer|string $id необязательно null
ID записи, которую нужно удалить
boolean $delete необязательно false
Удалить узел после изменения родителей дочерних элементов (если таковые имеются)

Возвращает

boolean
true при успехе, false при неудаче

Ссылка

http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::removeFromTree

reordersource public

reorder( Model $Model , array $options array() )

Метод переупорядочивания.

Переупорядочивает узлы (и дочерние узлы) дерева в соответствии с полем и направлением, указанными в параметрах. Этот метод не изменяет родителя ни одного узла.

Требуется действительное дерево, по умолчанию оно проверяется перед началом.

Параметры:

  • 'id' id записи, используемой в качестве корневого узла для переупорядочивания
  • 'field' Поле, используемое в переупорядочивании, по умолчанию displayField
  • 'order' Направление упорядочивания, либо DESC, либо ASC (по умолчанию ASC)
  • 'verify' Проверять ли дерево перед переупорядочиванием. По умолчанию true.

Параметры

Model $Model
Модель, использующая этот бихевиор
array $options необязательно array()
Массив опций для использования при переупорядочивании.

Возвращает

boolean
true при успехе, false при неудаче

Ссылка

http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html#TreeBehavior::reorder

setupsource 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
Модель, использующая этот бихевиор

Возвращает

mixed
true, если дерево валидно или пусто, иначе массив (тип ошибки [индекс, узел], [некорректный индекс 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
Модель, использующая этот бихевиор

Возвращает

mixed
False остановит передачу этого события другим бихевиорам

beforeValidatesource public

beforeValidate( Model $model , array $options array() )

Метод beforeValidate вызывается перед валидацией модели. Вы можете использовать этот обратный вызов для добавления правил валидации поведения в массив validate модели. Возврат false позволит вам заставить валидацию завершиться неудачно.

Параметры

Model $model
Модель, использующая это поведение
массив $options необязательно array()
Параметры, переданные из Model::save().

Возвращаемое значение

mixed
False или 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

__constructsource public

__construct( )

Конструктор, бездействующий

_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
Имя этого класса

Краткое описание свойств

$_defaultssource

protected массив

Значения по умолчанию

array(
    'parent' => 'parent_id', 'left' => 'lft', 'right' => 'rght', 'level' => null,
    'scope' => '1 = 1', 'type' => 'nested', '__parentChange' => false, 'recursive' => -1
)

$_deletedRowsource

protected массив

Используется для сохранения состояния между вызовами удаления.

array()

$errorssource

public массив

Ошибки

array()

Свойства, унаследованные от ModelBehavior

$mapMethodssource

public массив

Позволяет сопоставить регулярные выражения, совместимые с preg, с общедоступными или закрытыми методами в этом классе, где ключ массива — регулярное выражение, разделяемое символом /, а значение — метод класса. Похоже на функциональность магических методов findBy* / findAllBy*.

array()

$settingssource

public массив

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

См. также

Model::$alias
array()

© 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

Spec-Zone.ru

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