Spec-Zone.ru › CakePHP 3.6

Класс 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

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

  • _unsetEmptyFields() protected
    Удалить пустые переводы, чтобы избежать сохранения.
  • afterSave() public
    Удаляет временное свойство _i18n после сохранения сущности
  • beforeFind() public

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

  • beforeSave() public

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

  • buildMarshalMap() public

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

  • findTranslations() public

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

  • getLocale() public
    Возвращает текущий локаль.
  • groupTranslations() public

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

  • initialize() public
    Инициализационный метод
  • locale() public deprecated

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

  • setLocale() public

    Устанавливает локаль, которая должна использоваться для всех будущих операций поиска и сохранения в таблице, к которой прикреплено это поведение.

  • setupFieldAssociations() public

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

  • translationField() public
    Возвращает полностью алиасированное имя поля для переведенных полей.

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

__construct()source public

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

Конструктор

Параметры

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

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

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), однако для экземпляров autotable оно выводится из таблицы базы данных, на которую указывает объект, или в крайнем случае, из алиаса экземпляра autotable.

Параметры

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

Возвращает

строка

_rowMapper()source protected

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

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

Параметры

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

Возвращает

Cake\Collection\CollectionInterface
END_OF_DOCUMENT_MARKER ```

_unsetEmptyFields()source protected

_unsetEmptyFields( Cake\Datasource\EntityInterface $entity )

Сбросить пустые переводы для предотвращения сохранения.

Должно вызываться только если $this->_config['allowEmptyTranslations'] имеет значение false.

Parameters

Cake\Datasource\EntityInterface $entity
Сущность для проверки полей пустых переводов внутри.

afterSave()source public

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

Сбрасывает временное _i18n свойство после сохранения сущности

Parameters

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

beforeFind()source public

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

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

Parameters

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 )

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

Parameters

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

buildMarshalMap()source public

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

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

Parameters

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

Returns

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

Implementation of

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 не передан, будут возвращены все переводы для каждой записи.

Parameters

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

Returns

Cake\ORM\Query

getLocale()source public

getLocale( )

Возвращает текущий язык.

Если язык не был явно задан с помощью setLocale(), этот метод вернет текущий глобально настроенный язык.

Returns

string

See

\Cake\I18n\I18n::getLocale()
\Cake\ORM\Behavior\TranslateBehavior::setLocale()

groupTranslations()source public

groupTranslations( Cake\Datasource\ResultSetInterface $results )

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

Parameters

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

Returns

Cake\Collection\CollectionInterface

initialize()source public

initialize( array $config )

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

Parameters

array $config
Конфигурация для этого бэхейвиора.

Overrides

Cake\ORM\Behavior::initialize()

locale()source public deprecated

locale( string|null $locale = null )

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

Deprecated

3.6.0 Используйте setLocale()/getLocale() вместо этого.

Parameters

string|null $locale optional null
Язык для извлечения переведенных записей

Returns

string

setLocale()source public

setLocale( string|null $locale )

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

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

Обратите внимание, что в случае, если для сущности установлено свойство _locale, этот язык будет иметь приоритет над языком, установленным с помощью этого метода (и над глобально настроенным языком вообще)!

Parameters

string|null $locale

Язык для извлечения и сохранения записей. Передайте null для сброса текущего языка и чтобы бэхейвиор перешел к использованию глобально настроенного языка.

Returns


$this

See

\Cake\ORM\Behavior\TranslateBehavior::getLocale()

Link

https://book.cakephp.org/3.0/en/orm/behaviors/translate.html#retrieving-one-language-without-using-i18n-locale
https://book.cakephp.org/3.0/en/orm/behaviors/translate.html#saving-in-another-language

setupFieldAssociations()source public

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

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

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

Parameters

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

translationField()source public

translationField( string $field )

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

Если запрошенное поле настроено как поле перевода, возвращается поле content с алиасом соответствующей ассоциации. Для всех других полей возвращается имя поля с алиасом таблицы.

Parameters

string $field
Имя поля для алиасирования.

Returns

string

Methods inherited from Cake\ORM\Behavior

_reflectionCache()source protected

_reflectionCache( )

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

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

Returns

array

Throws

ReflectionException
END_OF_DOCUMENT_MARKER

_resolveMethodAliases()source protected

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

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

Параметры

строка $key
Ключ для фильтрации.
массив $defaults
Базовые отображения методов.
массив $config
Настраиваемые отображения методов.

Возвращает

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

getTable()source public

getTable( )

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

Возвращает

Cake\ORM\Table
Связанный экземпляр таблицы.

implementedEvents()source public

implementedEvents( )

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

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

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

Возвращает

массив

Реализация

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 дочерних классов, чтобы не было необходимости использовать рефлексию для получения доступного списка методов. Смотрите примеры в основных методах поведения.

Возвращает

массив

Исключения

ReflectionException

implementedMethods()source public

implementedMethods( )

implementedMethods

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

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

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

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

Возвращает

массив

Исключения

ReflectionException

verifyConfig()source public

verifyConfig( )

verifyConfig

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

Исключения

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

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

getTableLocator()source public

getTableLocator( )

Получить локатор таблиц.

Возвращает

Cake\ORM\Locator\LocatorInterface

setTableLocator()source public

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

Установить локатор таблиц.

Параметры

Cake\ORM\Locator\LocatorInterface $tableLocator
Экземпляр LocatorInterface.

Возвращает


$this

tableLocator()source public deprecated

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

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

Устаревшее

3.5.0 Используйте getTableLocator()/setTableLocator() вместо этого.

Параметры

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

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

Исключения

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

config()source public deprecated

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']);

Устаревшее

3.4.0 используйте setConfig()/getConfig() вместо этого.

Параметры

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

Возвращает

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

Исключения

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

configShallow()source public

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

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

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

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

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

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

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

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

Параметры

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

Возвращает


$this

getConfig()source public

getConfig( string|null $key = null , mixed $default = null )

Возвращает конфигурацию.

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

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

$this->getConfig();

Чтение определенного значения:

$this->getConfig('key');

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

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

Чтение со значением по умолчанию:

$this->getConfig('some-key', 'default-value');

Параметры

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

Возвращает

смешанное
Чтение значения конфигурации.
END_OF_DOCUMENT_MARKER

setConfig()source public

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

Устанавливает конфигурацию.

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

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

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

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

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

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

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

Параметры

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

Возвращает


$this

Выбрасывает

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

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

$_defaultConfigsource

protected массив

Значения конфигурации по умолчанию

Они сливаются с пользовательской конфигурацией при использовании поведения.

[
    'implementedFinders' => ['translations' => 'findTranslations'],
    'implementedMethods' => [
        'setLocale' => 'setLocale',
        'getLocale' => 'getLocale',
        'locale' => 'locale',
        'translationField' => 'translationField'
    ],
    '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–present 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.6/class-Cake.ORM.Behavior.TranslateBehavior.html

Spec-Zone.ru

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