Класс TranslateBehavior
Это поведение предоставляет способ перевода динамических данных, храня переводы в отдельной таблице, связанной с исходной записью из другой. Переведенные поля можно настроить на переопределение полей основной таблицы при извлечении или отложить их в другое свойство для того же сущности.
Если вы хотите переопределить поля, вам необходимо вызвать метод locale в этом поведении для установки языка, который нужно извлечь из таблицы переводов.
Если вы хотите получить все или определенные языки для каждой из извлеченных записей, вы можете использовать пользовательские translations поиск, доступные для таблицы.
- Cake\ORM\Behavior implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
-
Cake\ORM\Behavior\TranslateBehavior implements Cake\ORM\PropertyMarshalInterface uses Cake\ORM\Locator\LocatorAwareTrait
Краткое описание свойств
-
$_defaultConfigprotectedКонфигурация по умолчаниюarray -
$_localeprotectedstringИдентификатор языка, который будет использоваться для переопределения полей в связанной таблице из таблицы переводов
- Экземпляр таблицы
$_tableprotected - Экземпляр таблицы, ответственный за перевод
$_translationTableprotected
Унаследованные свойства
Краткое описание методов
- __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Обработка инициализации
-
Устанавливает все будущие запросы поиска для связанной таблицы на извлечение переведенных полей для заданного языка. Если значение не передано, возвращается текущая настроенная локаль.
- 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_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\QuerygetLocale()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\CollectionInterfaceinitialize()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
$localeoptional null - Язык для извлечения переведенных записей
Returns
stringsetLocale()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-localehttps://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
stringMethods inherited from Cake\ORM\Behavior
_reflectionCache()source protected
_reflectionCache( )
Получает реализованные методы этого бихевиора
Использует метод implementedEvents(), чтобы исключить методы обратного вызова. Методы, начинающиеся с _, будут проигнорированы, так же, как и методы, объявленные в Cake\ORM\Behavior
Returns
arrayThrows
ReflectionException_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 дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных компонентах.
Возвращает
массивИсключения
ReflectionExceptionimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение alias->метод имени, реализуемых компонентом. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведенном примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется, но не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных компонентах.
Возвращает
массивИсключения
ReflectionExceptionverifyConfig()source public
verifyConfig( )
verifyConfig
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые элементы.
Исключения
Cake\Core\Exception\Exceptionесли конфигурация неверна
Методы, используемые из Cake\ORM\Locator\LocatorAwareTrait
getTableLocator()source public
getTableLocator( )
Получает локатор таблицы.
Возвращает
Cake\ORM\Locator\LocatorInterfacesetTableLocator()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$tableLocatoroptional 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|строка
$mergeoptional 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
$keyoptional null - Ключ для получения/установления или весь массив конфигурации.
- смешанный|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional 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
$valueoptional 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
$keyoptional null - Ключ для получения или null для всей конфигурации.
- смешанный
$defaultoptional null - Возвращаемое значение, если ключ не существует.
Возвращает
смешанныйЗначение конфигурации для чтения.
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 строка
Имя локали, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
© 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