Spec-Zone.ru › CakePHP 2.9

Класс TreeBehavior

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

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

CakeObject
Extended by ModelBehavior
Extended by TreeBehavior
Пакет: Cake\Model\Behavior
См.: http://ru.wikipedia.org/wiki/Обход_дерева
Ссылка: http://book.cakephp.org/2.0/ru/core-libraries/behaviors/tree.html
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: MIT License
Расположение: Cake/Model/Behavior/TreeBehavior.php

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

  • $_defaults protected
    array
    Значения по умолчанию
  • $_deletedRow protected
    array
    Используется для сохранения состояния между вызовами обратного вызова delete.
  • $errors public
    array
    Ошибки

Унаследованные свойства

  • mapMethods, settings

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

  • _getMax() protected
    Получение максимального значения индекса в таблице.
  • _getMin() protected
    Получение минимального значения индекса в таблице.
  • _getNode() protected
    Возвращает один узел дерева по первичному ключу
  • _getOptions() protected

    Удобный метод для создания параметров find() по умолчанию из $arg, когда это ассоциативный массив.

  • _recoverByParentId() protected
    _recoverByParentId
  • _setChildrenLevel() protected
    Устанавливает уровень для потомков.
  • _setParent() protected
    Устанавливает родителя заданного узла
  • _sync() protected
    Метод синхронизации таблицы.
  • afterDelete() public
    Метод после удаления.
  • afterSave() public
    Метод после сохранения. Вызывается после всех сохранений
  • beforeDelete() public
    Сохраняет запись, подлежащую удалению.
  • beforeFind() public
    Выполняется перед операцией find().
  • beforeSave() public
    Метод перед сохранением. Вызывается перед всеми сохранениями
  • childCount() public
    Получить количество дочерних узлов
  • children() public
    Получить дочерние узлы текущей модели
  • formatTreeList() public
    Форматирует результат вызова find() в иерархический массив, используемый для HTML-списков выбора.
  • generateTreeList() public
    Удобный метод для возвращения иерархического массива, используемого для HTML-списков выбора
  • getLevel() public
    Возвращает уровень вложенности узла в дереве.
  • getParentNode() public
    Получить родительский узел
  • getPath() public
    Получить путь к заданному узлу
  • moveDown() public
    Переместить узел вниз, не изменяя родителя.
  • moveUp() public
    Переместить узел вверх, не изменяя родителя.
  • recover() public
    Восстановление поврежденного дерева
  • removeFromTree() public
    Удалить текущий узел из дерева и переместить всех детей на один уровень выше.
  • reorder() public
    Метод переупорядочения.
  • setup() public
    Инициализация поведения дерева
  • verify() public
    Проверка, является ли текущее дерево допустимым.

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

_getMax()source protected

_getMax( Model $Model , string $scope , string $right , integer $recursive -1 , boolean $created false )

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

Параметры

Model $Model
Экземпляр модели.
строка $scope
Условия ограничения.
строка $right
Правое значение
целое число $recursive необязательно -1
Значение рекурсивного поиска.
логический $created необязательно false
Является ли это новой записью.

Возвращает

целое число

_getMin()source protected

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

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

Параметры

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

Возвращает

целое число

_getNode()source protected

_getNode( Model $Model , integer|string $id )

Возвращает один узел дерева по первичному ключу

Параметры

Model $Model
Модель, использующая это поведение
целое число|строка $id
ID записи для чтения

Возвращает

массив|логическое значение
Прочитанная запись или false

_getOptions()source protected

_getOptions( array $arg )

Удобный метод для создания параметров find() по умолчанию из $arg, когда это ассоциативный массив.

Параметры

массив $arg
Массив

Возвращает

массив
Массив параметров

_recoverByParentId()source protected

_recoverByParentId( Model $Model , integer $counter 1 , integer|string|null $parentId null )

_recoverByParentId

Рекурсивная вспомогательная функция, используемая в recover

Параметры

Model $Model
Экземпляр модели.
целое число $counter необязательно 1
Счетчик
целое число|строка|null $parentId необязательно null
ID родительской записи

Возвращает

целое число
счетчик

_setChildrenLevel()source protected

_setChildrenLevel( Model $Model , integer|string $id )

Устанавливает уровень для потомков.

Параметры

Model $Model
Модель, использующая это поведение.
целое число|строка $id
ID записи
END_OF_DOCUMENT_MARKER

_setParent()source protected

_setParent( Model $Model , integer|string|null $parentId null , boolean $created false )

Устанавливает родителя для данного узла

Параметр force используется для переопределения логики «не изменять родителя на текущего родителя» в случае восстановления поврежденной таблицы или создания новых узлов. В противном случае он всегда должен быть false. На самом деле этот метод мог бы быть закрытым, так как вызов save с установленным parent_id также вызывает setParent

Параметры

Model $Model
Модель, использующая этот обработчик
integer|string|null $parentId необязательно null
ID родительской записи
boolean $created необязательно false
True, если запись создана, иначе false.

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

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

_sync()source protected

_sync( Model $Model , integer $shift , string $dir '+' , array $conditions array() , boolean $created false , string $field 'both' )

Метод синхронизации таблицы.

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

Параметры

Model $Model
Экземпляр модели.
integer $shift
Смещение.
string $dir необязательно '+'
Направление.
array $conditions необязательно array()
Условия.
boolean $created необязательно false
Является ли это новой записью.
string $field необязательно 'both'
Тип поля.

afterDelete()source public

afterDelete( Model $Model )

Метод после удаления.

Удалить текущий узел и все дочерние узлы с помощью метода deleteAll и синхронизировать таблицу.

Параметры

Model $Model
Модель, использующая этот обработчик

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

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

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

ModelBehavior::afterDelete()

afterSave()source public

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

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

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

Параметры

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

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

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

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

ModelBehavior::afterSave()

beforeDelete()source public

beforeDelete( Model $Model , boolean $cascade true )

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

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

Параметры

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

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

boolean

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

ModelBehavior::beforeDelete()

beforeFind()source public

beforeFind( Model $Model , array $query )

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

Параметры

Model $Model
Модель, использующая обработчик
array $query
Параметры запроса, установленные Cake

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

array

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

ModelBehavior::beforeFind()

beforeSave()source public

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

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

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

Параметры

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

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

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

См. также

Model::save()

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

ModelBehavior::beforeSave()

childCount()source public

childCount( Model $Model , integer|string|boolean $id null , boolean $direct false )

Получить количество дочерних узлов

Если параметр direct установлен в true, считаются только непосредственные дочерние узлы (на основе поля parent_id). Если для параметра id передано false, считаются все узлы верхнего уровня или все узлы.

Параметры

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

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

integer
количество дочерних узлов

Ссылка

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

children()source 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
Модель, использующая этот обработчик
integer|string $id необязательно null
ID записи для чтения
boolean $direct необязательно false
возвращать только прямые или все дочерние элементы
string|array $fields необязательно null
Либо одно строковое имя поля, либо массив имён полей
string $order необязательно null
Условия ORDER BY SQL (например, «price DESC» или «name ASC»), по умолчанию используется порядок дерева
integer $limit необязательно null
Оператор LIMIT SQL для подсчета элементов на странице.
integer $page необязательно 1
Номер страницы для доступа к данным на страницах
integer $recursive необязательно null
Глубина уровней вложенности для получения связанных записей

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

array
Массив дочерних узлов

Ссылка

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

formatTreeList()source 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
Модель, использующая этот обработчик
array $results
Массив результатов вызова find()
array $options необязательно array()
Параметры

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

array
Ассоциативный массив записей, где id — ключ, а поле отображения — значение

generateTreeList()source public

generateTreeList( Model $Model , string|array $conditions null , string $keyPath null , string $valuePath null , string $spacer '_' , integer $recursive null )

Удобный метод для возврата иерархического массива, используемого для HTML-списков выбора.

Параметры

Model $Model
Модель, использующая этот метод
string|array $conditions необязательный null
SQL-условия в виде строки или массива ('поле' =>'значение', ...)
string $keyPath необязательный null
Путь к ключу, например "{n}.Post.id"
string $valuePath необязательный null
Путь к значению, например "{n}.Post.title"
string $spacer необязательный '_'
Символ или символы, которые будут повторяться
integer $recursive необязательный null
Глубина вложенности для извлечения связанных записей

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

array
Ассоциативный массив записей, где id — ключ, а поле отображения — значение

Ссылка

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

getLevel()source public

getLevel( Model $Model , integer|string|null $id null )

Возвращает уровень вложенности узла в дереве.

Параметры

Model $Model
Модель, использующая этот метод
integer|string|null $id необязательный null
Первичный ключ записи, для которой нужно получить уровень.

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

integer|boolean
Целое число уровня или false, если узел не существует.

getParentNode()source public

getParentNode( Model $Model , integer|string $id null , string|array $fields null , integer $recursive null )

Получить родительский узел

считывает родительский id и возвращает этот узел

Параметры

Model $Model
Модель, использующая этот метод
integer|string $id необязательный null
ID записи для считывания
string|array $fields необязательный null
Поля для получения
integer $recursive необязательный null
Глубина вложенности для извлечения связанных записей

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

array|boolean
Массив данных для родительского узла

Ссылка

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

getPath()source public

getPath( Model $Model , integer|string|null $id null , string|array|null $fields null , integer|null $recursive null )

Получить путь к заданному узлу

Параметры

Model $Model
Модель, использующая этот метод
integer|string|null $id необязательный null
ID записи для считывания
string|array|null $fields необязательный null
Строка имени поля или массив имён полей
integer|null $recursive необязательный null
Глубина вложенности для извлечения связанных записей

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

array
Массив узлов от самого верхнего родителя до текущего узла

Ссылка

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

moveDown()source public

moveDown( Model $Model , integer|string|null $id null , integer|boolean $number 1 )

Переупорядочить узел без изменения родителя.

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

Параметры

Model $Model
Модель, использующая этот метод
integer|string|null $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

moveUp()source public

moveUp( Model $Model , integer|string|null $id null , integer|boolean $number 1 )

Переупорядочить узел без изменения родителя.

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

Параметры

Model $Model
Модель, использующая этот метод
integer|string|null $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

recover()source public

recover( Model $Model , string $mode 'parent' , string|integer|null $missingParentAction null )

Восстановление поврежденного дерева

Параметр mode используется для указания источника информации, который является корректным. Противоположный источник данных будет заполнен на основе этого источника. Например, если поля MPTT повреждены или пустые, с помощью $mode 'parent' значения поля parent_id будут использованы для заполнения полей left и right. Параметр missingParentAction применим только к режиму "parent" и определяет, что делать, если поле parent содержит id, которого нет.

Параметры

Model $Model
Модель, использующая этот метод
string $mode необязательный 'parent'
parent или tree
string|integer|null $missingParentAction необязательный null

'return' — ничего не делать и вернуть, 'delete' — удалить, или id родителя, чтобы установить его как parent_id

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

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

Ссылка

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

removeFromTree()source public

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

Удалить текущий узел из дерева и переместить всех потомков на один уровень вверх.

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

Параметры

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

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

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

Ссылка

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

reorder()source public

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

Метод перестановки.

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

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

Опции:

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

Параметры

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

Возвращает

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

Ссылка

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

setup()source public

setup( Model $Model , array $config array() )

Инициализация бихевиора Tree

Параметры

Model $Model
используемой модели
массив $config необязательно массив()
массив параметров настройки.

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

ModelBehavior::setup()

verify()source 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

_addToWhitelist()source protected

_addToWhitelist( Model $model , string $field )

Если свойство $whitelist модели не пустое, $field будет добавлено в него. Примечание: этот метод следует использовать только в методах beforeValidate или beforeSave, чтобы гарантировать, что он изменяет whitelist только для текущей операции сохранения. Также убедитесь, что вы явно установили значение поля, которое вы разрешаете.

Параметры

Model $model
Модель, использующая этот бихевиор
строка $field
Поле, которое нужно добавить в $whitelist модели

afterFind()source public

afterFind( Model $model , mixed $results , boolean $primary false )

Обработчик после поиска. Может использоваться для модификации результатов, возвращаемых методом find.

Параметры

Model $model
Модель, использующая этот бихевиор
mixed $results
Результаты операции поиска
boolean $primary необязательно false
Является ли запрос прямым для данной модели (или для ассоциации)

Возвращает

mixed
Массивное значение заменит значение $results - другие значения будут проигнорированы.

afterValidate()source public

afterValidate( Model $model )

afterValidate вызывается сразу после проверки данных модели; вы можете использовать этот обработчик для проведения любых необходимых очисток или подготовке данных

Параметры

Model $model
Модель, использующая этот бихевиор

Возвращает

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

beforeValidate()source public

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

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

Параметры

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

Возвращает

mixed
False или null прервут операцию. Любое другое значение продолжит выполнение.

См. также

Model::save()

cleanup()source public

cleanup( Model $model )

Очистка всех инициализаций, выполненных этим бихевиором в модели. Вызывается при динамическом отсоединении бихевиора от модели с помощью Model::detach().

Параметры

Model $model
Модель, использующая этот бихевиор

См. также

BehaviorCollection::detach()

onError()source public

onError( Model $model , string $error )

Обработчик ошибок DataSource

Параметры

Model $model
Модель, использующая этот бихевиор
строка $error
Ошибка, сгенерированная в DataSource

Методы, унаследованные от CakeObject

__construct()source public

__construct( )

Конструктор, не делает ничего

_mergeVars()source protected

_mergeVars( array $properties , string $class , boolean $normalize true )

Объединяет свойство $property этого объекта со свойством в определении $class. Значение свойства этого объекта будет объединено поверх значения $class'.

Это обеспечивает некоторую магию DRY, предоставляемую CakePHP. Если вы хотите отключить её, переопределите этот метод как пустую функцию.

Параметры

массив $properties
Имена свойств для объединения.
строка $class
Класс для объединения свойства с.
boolean $normalize необязательно true
Установите в true, чтобы выполнить нормализацию свойств с помощью Hash::normalize() перед объединением.

_set()source protected

_set( array $properties array() )

Позволяет установить несколько свойств объекта в одной строке кода. Будут установлены только свойства, которые определены в объявлении класса.

Параметры

массив $properties необязательно массив()
Ассоциативный массив, содержащий свойства и соответствующие значения.

_stop()source protected

_stop( integer|string $status 0 )

Остановка выполнения текущего сценария. Оборачивает exit(), что облегчает тестирование.

Параметры

целое число/строка $status необязательно 0
смотрите http://php.net/exit для значений

dispatchMethod()source public

dispatchMethod( string $method , array $params array() )

Вызывает метод этого объекта с заданными параметрами. Обеспечивает ОО-обёртку для call_user_func_array

Параметры

строка $method
Имя вызываемого метода
массив $params необязательно массив()
Список параметров для использования при вызове $method

Возвращает

mixed
Возвращает результат вызова метода
END_OF_DOCUMENT_MARKER

log()source 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
Успешность записи в журнал

requestAction()source 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 необязательно массив()

Если массив содержит ключ "return", он устанавливает AutoRender в true. Также может использоваться для отправки данных GET/POST и именованных/переданных аргументов.

Возвращает

mixed

Булево значение true или false при успешном/неуспешном выполнении или содержимое рендеренного действия, если в $extra установлен ключ 'return'.


toString()source public

toString( )

Преобразование CakeObject в строку. Каждый класс может переопределить этот метод по мере необходимости.

Возвращает

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()

© 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.
https://api.cakephp.org/2.9/class-TreeBehavior.html

Spec-Zone.ru

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