Класс 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), однако для объектов автотаблиц оно определяется по имени таблицы базы данных, на которую указывает объект — или, в крайнем случае, по алиасу объекта автотаблицы.
Параметры
-
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.
Параметры
-
Cake\Datasource\EntityInterface$entity - Сущность для проверки полей пустых переводов.
afterSave()source public
afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Сбрасывает временное свойство _i18n после сохранения сущности.
Параметры
-
Cake\Event\Event$event - Событие beforeSave, которое было сгенерировано
-
Cake\Datasource\EntityInterface$entity - Сущность, которая будет сохранена
beforeFind()source public
beforeFind( Cake\Event\Event $event , Cake\ORM\Query $query , ArrayObject $options )
Метод обратного вызова, который слушает событие beforeFind в связанной таблице. Он изменяет переданный запрос, загружая переведенные поля с помощью eager loading и добавляя форматер для копирования значений в записи основной таблицы.
Параметры
-
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 - параметры, переданные методу save
buildMarshalMap()source public
buildMarshalMap( Cake\ORM\Marshaller $marshaller , array $map , array $options )
Добавить в _translations обработчики маршалинга. Вы можете отключить маршаллинг переводов, установив 'translations' => false в параметрах, предоставленных Table::newEntity() или Table::patchEntity().
Параметры
-
Cake\ORM\Marshaller$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\QuerygetLocale()source public
getLocale( )
Возвращает текущий язык.
Если язык не был явно задан с помощью setLocale(), этот метод вернёт текущий глобально настроенный язык.
Возвращает
stringСм. также
\Cake\I18n\I18n::getLocale()\Cake\ORM\Behavior\TranslateBehavior::setLocale()
groupTranslations()source public
groupTranslations( Cake\Datasource\ResultSetInterface $results )
Изменяет результаты поиска в таблице, чтобы объединить записи переводов в каждую сущность под ключом _translations.
Параметры
-
Cake\Datasource\ResultSetInterface$results - Результаты для изменения.
Возвращает
Cake\Collection\CollectionInterfaceinitialize()source public
initialize( array $config )
Метод инициализации
Параметры
- array
$config - Конфигурация этого поведения.
Переопределяет
Cake\ORM\Behavior::initialize() locale()source public deprecated
locale( string|null $locale = null )
Устанавливает все последующие запросы поиска для связанной таблицы для получения переведенных полей для указанного языка. Если значение не передано, возвращает текущий настроенный язык
Устаревшее
3.6.0 Используйте setLocale()/getLocale() вместо этого.Параметры
- string|null
$localeнеобязательный null - Язык для получения переведенных записей
Возвращает
stringsetLocale()source public
setLocale( string|null $locale )
Устанавливает язык, который следует использовать для всех последующих операций поиска и сохранения в таблице, к которой прикреплено данное поведение.
При получении записей, поведение будет включать в себя контент для языка, установленного с помощью этого метода, и аналогично при сохранении данных, оно будет сохранять данные на этом языке.
Обратите внимание, что если для сущности установлено свойство _locale, этот язык будет иметь приоритет над языком, установленным с помощью этого метода (и над глобально настроенным языком).
Параметры
- string|null
$locale Язык для получения и сохранения записей. Передайте
nullдля сброса текущего языка и позволяйте поведению вернуться к использованию глобально настроенного языка.
Возвращает
$this
См. также
\Cake\ORM\Behavior\TranslateBehavior::getLocale()Ссылка
https://book.cakephp.org/3.0/ru/orm/behaviors/translate.html#retrieving-one-language-without-using-i18n-localehttps://book.cakephp.org/3.0/ru/orm/behaviors/translate.html#saving-in-another-language
setupFieldAssociations()source public
setupFieldAssociations( array $fields , string $table , string $model , string $strategy )
Создаёт ассоциации между связанной таблицей и каждым полем, переданным в этот метод.
Кроме того, создаётся ассоциация i18n HasMany, которая будет использоваться для получения всех переводов для каждой записи в связанной таблице.
Параметры
- array
$fields - Список полей для создания ассоциаций.
- string
$table - Имя таблицы для хранения каждого перевода поля.
- string
$model - Значение поля модели.
- string
$strategy - Стратегия, используемая в ассоциации _i18n.
translationField()source public
translationField( string $field )
Возвращает полностью алиасовое имя поля для переведённых полей.
Если запрошенное поле настроено как поле перевода, возвращается поле content с алиасом соответствующей ассоциации. Для всех других полей возвращается имя поля с алиасом таблицы.
Параметры
- string
$field - Имя поля, которое нужно алиасить.
Возвращает
stringМетоды, унаследованные от Cake\ORM\Behavior
_reflectionCache()source protected
_reflectionCache( )
Получает методы, реализованные этим поведением.
Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _, будут проигнорированы, как и методы, объявленные в Cake\ORM\Behavior.
Возвращает
arrayВыбрасывает
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 - Значение для записи.
- boolean|строка
$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 - Значение для установки.
- boolean
$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 - Значение, возвращаемое, когда ключ не существует.
Возвращает
смешанный типДанные конфигурации по указанному ключу или 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.8/class-Cake.ORM.Behavior.TranslateBehavior.html