Spec-Zone.ru › CakePHP 3.7

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

  • 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 необязательно []
Конфигурация для этого поведения.

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

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

См. также

\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

См. также

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

Ссылка

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

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

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

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

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

Возвращает

массив

Исключения

ReflectionException

implementedMethods()source public

implementedMethods( )

implementedMethods

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

[
   '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 optional 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
Значение для записи.
boolean|строка $merge optional false

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

Исключения

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 optional null
Ключ для получения/установления или весь массив конфигурации.
смешанный|null $value optional null
Значение для установки.
boolean $merge optional 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 optional 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 optional null
Ключ для получения или null для всей конфигурации.
смешанный $default optional 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.7/class-Cake.ORM.Behavior.TranslateBehavior.html

Spec-Zone.ru

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