Класс 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в связанной таблице. Он изменяет переданный запрос, загружая переведенные поля с помощью eager loading и добавляет форматировщик для копирования значений в записи основной таблицы. - 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 - Таблица, к которой прикреплено это поведение.
- массив
$configoptional [] - Конфигурация этого поведения.
Переопределяет
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
stringSee
\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
See
\Cake\ORM\Behavior\TranslateBehavior::getLocale()Link
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
Предоставляет отображение алиас->имя_метода реализованных методов поиска. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном выше примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения доступного списка методов. Смотрите примеры в основных методах поведения.
Возвращает
массивИсключения
ReflectionExceptionimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение алиас->имя_метода реализованных методов. Пример:
[ '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$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 - Возвращаемое значение, когда ключ не существует.
Возвращает
смешанноеЧтение значения конфигурации.
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.6/class-Cake.ORM.Behavior.TranslateBehavior.html