Spec-Zone.ru › CakePHP 3.3

Класс TranslateBehavior

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

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

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

Cake\ORM\Behavior implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
Extended by Cake\ORM\Behavior\TranslateBehavior implements Cake\ORM\PropertyMarshalInterface uses Cake\ORM\Locator\LocatorAwareTrait
Пространство имен: Cake\ORM\Behavior
Расположение: ORM/Behavior/TranslateBehavior.php

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

  • $_defaultConfig protected
    array
    Значение по умолчанию конфигурации
  • $_locale protected
    string

    Имя языка, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов

  • $_table protected
    Cake\ORM\Table
    Экземпляр таблицы
  • $_translationTable protected
    Cake\ORM\Table
    Экземпляр таблицы, ответственный за перевод

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

  • _reflectionCache _config, _configInitialized _tableLocator

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

  • __construct() public
    Конструктор
  • _bundleTranslatedFields() protected

    Вспомогательный метод, используемый для создания нескольких сущностей переведенных полей из данных, найденных в свойстве _translations в переданной сущности. Результат будет помещен в свойство _i18n

  • _findExistingTranslations() protected

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

  • _referenceName() protected
    Определение имени ссылки, используемого для данной таблицы
  • _rowMapper() protected

    Изменяет результаты поиска таблицы, чтобы объединить переведенные поля в каждую сущность для заданного языка.

  • afterSave() public
    Очищает временное свойство _i18n после сохранения сущности
  • beforeFind() public

    Метод обратного вызова, который прослушивает событие beforeFind в связанной таблице. Он изменяет переданный запрос, загружая переведенные поля и добавляя обработчик для копирования значений в записи основной таблицы.

  • beforeSave() public

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

  • buildMarshalMap() public

    Добавление обработчиков сопоставления _translations, если включено сопоставление переводов. Вам необходимо явно включить сопоставление переводов, добавив 'translations' => true в опции, предоставленные для Table::newEntity() или Table::patchEntity()

  • findTranslations() public

    Пользовательский метод поиска, используемый для получения всех переводов для найденных записей. Извлеченные переводы можно отфильтровать по языку, передав ключ locales в массиве опций.

  • groupTranslations() public

    Изменяет результаты поиска таблицы, чтобы объединить полные записи переводов в каждую сущность под ключом _translations

  • initialize() public
    Обработка инициализации
  • locale() public

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

  • setupFieldAssociations() public

    Создаёт связи между связанной таблицей и каждым полем, переданным в этот метод.

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

__construct()source public

__construct( Cake\ORM\Table $table , array $config [] )

Конструктор

Параметры

Cake\ORM\Table $table
Таблица, к которой прикреплено это поведение.
массив $config опционально []
Конфигурация для этого поведения.

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

Cake\ORM\Behavior::__construct()

_bundleTranslatedFields()source protected

_bundleTranslatedFields( Cake\Datasource\EntityInterface $entity )

Вспомогательный метод, используемый для создания нескольких сущностей переведенных полей из данных, найденных в свойстве _translations в переданной сущности. Результат будет помещен в свойство _i18n

Параметры

Cake\Datasource\EntityInterface $entity
Сущность

_findExistingTranslations()source protected

_findExistingTranslations( array $ruleSet )

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

Параметры

массив $ruleSet
массив массивов условий, используемых для поиска каждого

Возвращает

массив

_referenceName()source protected

_referenceName( Cake\ORM\Table $table )

Определение имени ссылки, используемого для данной таблицы

Имя ссылки обычно определяется по имени класса объекта таблицы (PostsTable -> Posts), однако для объектов автотаблиц оно определяется по таблице базы данных, к которой указывает объект - или в крайнем случае, по алиасу объекта автотаблицы.

Параметры

Cake\ORM\Table $table
Класс таблицы, для которого нужно получить имя ссылки.

Возвращает

строка

_rowMapper()source protected

_rowMapper( Cake\Datasource\ResultSetInterface $results , string $locale )

Изменяет результаты поиска таблицы, чтобы объединить переведенные поля в каждую сущность для заданного языка.

Параметры

Cake\Datasource\ResultSetInterface $results
Результаты для сопоставления.
строка $locale
Строка языка

Возвращает

Cake\Collection\Collection

afterSave()source public

afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )

Очищает временное свойство _i18n после сохранения сущности

Параметры

Cake\Event\Event $event
Событие beforeSave, которое было запущено
Cake\Datasource\EntityInterface $entity
Сущность, которая будет сохранена
END_OF_DOCUMENT_MARKER

beforeFind()source public

beforeFind( Cake\Event\Event $event , Cake\ORM\Query $query , ArrayObject $options )

Метод обратного вызова, который прослушивает событие beforeFind в связанной таблице. Он изменяет переданный запрос, жадно загружая переведённые поля и добавляя форматировщик для копирования значений в записи основной таблицы.

Параметры

Cake\Event\Event $event
Событие beforeFind, которое было сгенерировано.
Cake\ORM\Query $query
Запрос
ArrayObject $options
Параметры запроса

beforeSave()source public

beforeSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )

Изменяет сущность перед сохранением, чтобы переведённые поля также сохранялись в базе данных.

Параметры

Cake\Event\Event $event
Событие beforeSave, которое было сгенерировано
Cake\Datasource\EntityInterface $entity
Сущность, которая будет сохранена
ArrayObject $options
Параметры, переданные методу сохранения

buildMarshalMap()source public

buildMarshalMap( Cake\ORM\Marhshaller $marshaller , array $map , array $options )

Добавляет обработчики маппинга _translations, если включён маппинг переводов. Вам нужно явно включить маппинг переводов, добавив 'translations' => true в параметры, передаваемые Table::newEntity() или Table::patchEntity().

Параметры

Cake\ORM\Marhshaller $marshaller
Маршализер таблицы, к которой прикреплён данный бихевиор.
array $map
Карта свойств, которая строится.
array $options
Массив опций, используемых в вызове маршализации.

Возвращает

array
Карту [property => callable] дополнительных свойств для маппинга.

Реализация

Cake\ORM\PropertyMarshalInterface::buildMarshalMap()

findTranslations()source public

findTranslations( Cake\ORM\Query $query , array $options )

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

Переведённые значения будут найдены для каждой сущности под свойством _translations, содержащем массив, индексированный именем языка.

Пример:

$article = $articles->find('translations', ['locales' => ['eng', 'deu'])->first();
$englishTranslatedFields = $article->get('_translations')['eng'];

Если массив locales не передан, будут возвращены все переводы для каждой записи.

Параметры

Cake\ORM\Query $query
Исходный запрос для изменения
array $options
Опции

Возвращает

Cake\ORM\Query

groupTranslations()source public

groupTranslations( Cake\Datasource\ResultSetInterface $results )

Изменяет результаты поиска в таблице, чтобы объединить полные записи переводов в каждую сущность под ключом _translations.

Параметры

Cake\Datasource\ResultSetInterface $results
Результаты для изменения.

Возвращает

Cake\Collection\Collection

initialize()source public

initialize( array $config )

Обработчик инициализации

Параметры

array $config
Настройки для данного поведения.

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

Cake\ORM\Behavior::initialize()

locale()source public

locale( string|null $locale null )

Устанавливает все будущие поиски для связанной таблицы на получение переведённых полей для указанного языка. Если значение не передано, возвращает текущий язык

Параметры

string|null $locale необязательно null
Язык для получения переведённых записей

Возвращает

string

setupFieldAssociations()source public

setupFieldAssociations( array $fields , string $table , string $model , string $strategy )

Создаёт связи между связанной таблицей и каждым полем, переданным в этот метод.

Кроме того, создаётся связь i18n HasMany, которая будет использоваться для получения всех переводов для каждой записи в связанной таблице.

Параметры

array $fields
Список полей для создания связей.
string $table
Имя таблицы для хранения каждого перевода поля.
string $model
Значение поля модели.
string $strategy
Стратегия, используемая в ассоциации _i18n.

Методы, унаследованные от Cake\ORM\Behavior

_reflectionCache()source protected

_reflectionCache( )

Получает методы, реализованные этим бихевиором.

Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _ будут игнорироваться, как и методы, объявленные в Cake\ORM\Behavior.

Возвращает

array

_resolveMethodAliases()source protected

_resolveMethodAliases( string $key , array $defaults , array $config )

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

Параметры

string $key
Ключ для фильтра.
array $defaults
Стандартные сопоставления методов.
array $config
Настраиваемые сопоставления методов.

Возвращает

array
Список конфигурационных данных без дубликатов.

implementedEvents()source public

implementedEvents( )

Получает обратные вызовы модели, которыми интересуется это поведение.

Определение одного из методов обратного вызова предполагает, что поведение заинтересовано в соответствующем событии.

Переопределите этот метод, если вам нужно добавить обработчики событий нестандартного типа. Или если вы хотите, чтобы ваше поведение прослушивало нестандартные события.

Возвращает

array

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

implementedFinders()source public

implementedFinders( )

implementedFinders

Предоставляет отображение алиас->имя_метода, какие поисковые методы реализует поведение. Пример:

[
   'this' => 'findThis',
   'alias' => 'findMethodName'
 ]

С данным примером, вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName().

Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Смотрите примеры в базовых поведениих.

Возвращает

array

implementedMethods()source public

implementedMethods( )

implementedMethods

Предоставляет отображение алиас->имя_метода, какие методы реализует поведение. Пример:

[
   'method' => 'method',
   'aliasedmethod' => 'somethingElse'
 ]

С данным примером, вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse().

Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Смотрите примеры в базовых поведениих.

Возвращает

array

verifyConfig()source public

verifyConfig( )

verifyConfig

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

Выбрасывает

Cake\Core\Exception\Exception
если конфигурация неверна

Методы, используемые из Cake\ORM\Locator\LocatorAwareTrait

tableLocator()source public

tableLocator( Cake\ORM\Locator\LocatorInterface $tableLocator null )

Устанавливает локатор таблицы. Если параметры не переданы, возвращает текущий локатор.

Параметры

Cake\ORM\Locator\LocatorInterface $tableLocator необязательно null
Экземпляр LocatorInterface.

Возвращает

Cake\ORM\Locator\LocatorInterface

Методы, используемые из Cake\Core\InstanceConfigTrait

_configDelete()source protected

_configDelete( string $key )

Удалить один ключ конфигурации

Параметры

строка $key
Ключ для удаления.

Исключения

Cake\Core\Exception\Exception
при попытке перезаписать существующую конфигурацию

_configRead()source protected

_configRead( string|null $key )

Чтение переменной конфигурации

Параметры

строка|null $key
Ключ для чтения.

Возвращает

смешанный тип

_configWrite()source protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Запись переменной конфигурации

Параметры

строка|массив $key
Ключ для записи.
смешанный тип $value
Значение для записи.
логическое значение|строка $merge необязательно false

Истинно для рекурсивного слияния, 'shallow' для простого слияния, ложно для перезаписи, по умолчанию ложно.

Исключения

Cake\Core\Exception\Exception
при попытке перезаписи существующей конфигурации

config()source public

config( string|array|null $key null , mixed|null $value null , boolean $merge true )

Использование

Чтение всей конфигурации:

$this->config();

Чтение конкретного значения:

$this->config('key');

Чтение вложенного значения:

$this->config('some.nested.key');

Установка конкретного значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив|null $key необязательно null
Ключ для получения/установки или полный массив настроек.
смешанный тип|null $value необязательно null
Значение для установки.
логическое значение $merge необязательно true
Рекурсивное слияние или перезапись существующей конфигурации, по умолчанию истинно.

Возвращает

смешанный тип
Чтение значения конфигурации или сам объект при операциях записи.

Исключения

Cake\Core\Exception\Exception
При попытке установить недопустимый ключ.

configShallow()source public

configShallow( string|array $key , mixed|null $value null )

Объединение предоставленной конфигурации с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.

Установка конкретного значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив $key
Ключ для установки или полный массив конфигурации.
смешанный тип|null $value необязательно null
Значение для установки.

Возвращает


$this Сам объект.

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

$_defaultConfigsource

protected массив

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

Эти значения объединяются с пользовательскими настройками при использовании поведения.

[
    'implementedFinders' => ['translations' => 'findTranslations'],
    'implementedMethods' => ['locale' => 'locale'],
    'fields' => [],
    'translationTable' => 'I18n',
    'defaultLocale' => '',
    'referenceName' => '',
    'allowEmptyTranslations' => true,
    'onlyTranslated' => false,
    'strategy' => 'subquery',
    'tableLocator' => null,
    'validator' => false
]

$_localesource

protected строка

Имя языка, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов

$_tablesource

protected Cake\ORM\Table

Экземпляр таблицы

$_translationTablesource

protected Cake\ORM\Table

Экземпляр таблицы, отвечающий за перевод

© 2005–2017 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/3.3/class-Cake.ORM.Behavior.TranslateBehavior.html

Spec-Zone.ru

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