Класс TranslateBehavior
Это поведение предоставляет способ перевода динамических данных, сохраняя переводы в отдельной таблице, связанной с исходной записью из другой. Переведенные поля можно настроить на переопределение полей в основной таблице при получении или отложить их в другое свойство для того же сущности.
Если вы хотите переопределить поля, вам необходимо вызвать метод locale в этом поведении для установки языка, который вы хотите получить из таблицы переводов.
Если вы хотите получить все или определенные языки для каждой из полученных записей, вы можете использовать пользовательские translations поисковики, доступные для таблицы.
- Cake\ORM\Behavior реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait
-
Cake\ORM\Behavior\TranslateBehavior реализует Cake\ORM\PropertyMarshalInterface использует 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в массиве параметров. - groupTranslations() public
Изменяет результаты поиска таблицы, чтобы объединить полные записи переводов в каждую сущность под ключом
_translations - initialize() publicОбработчик инициализации
- locale() 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.
Параметры
-
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 в связанной таблице. Он изменяет переданный запрос, загружая жадно переведенные поля и добавляя обработчик для копирования значений в записи основной таблицы.
Параметры
-
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\QuerygroupTranslations()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
locale( string|null $locale null )
Устанавливает все будущие запросы для связанной таблицы так, чтобы они также загружали переведенные поля для переданного языка. Если значение не передано, возвращает текущий язык.
Параметры
- string|null
$localeнеобязательно null - Язык для извлечения переведенных записей.
Возвращает
stringsetupFieldAssociations()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_resolveMethodAliases()source protected
_resolveMethodAliases( string $key , array $defaults , array $config )
Удаляет алиасованные методы, которые в противном случае будут дублироваться конфигурацией пользовательского интерфейса.
Параметры
- string
$key - Ключ для фильтрации.
- array
$defaults - Стандартные отображения методов.
- array
$config - Настроенные отображения методов.
Возвращает
arrayСписок данных конфигурации без дублирования.
getTable()source public
getTable( )
Получить экземпляр таблицы, к которому привязано это поведение.
Возвращает
Cake\ORM\TableЭкземпляр связанной таблицы.
implementedEvents()source public
implementedEvents( )
Получает модели обратных вызовов, к которым заинтересовано это поведение.
Определяя один из методов обратного вызова, предполагается, что поведение заинтересовано в соответствующем событии.
Переопределите этот метод, если вам нужно добавить слушателей событий нестандартного формата. Или если вы хотите, чтобы ваше поведение прослушивало нестандартные события.
Возвращает
arrayРеализация
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 дочерних классов, чтобы не было необходимости использовать рефлексию для вывода доступного списка методов. См. примеры в основных поведенческих блоках.
Возвращает
arrayimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение алиас->имя_метода для методов, реализованных поведением. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведенном примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется (хотя и не обязательно) определять implementedFinders в свойстве config дочерних классов, чтобы не использовать рефлексию для получения списка доступных методов. Смотрите примеры в базовых поведенях.
Возвращает
arrayverifyConfig()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
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 - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Записывает ключ конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|строка
$mergeнеобязательно false True для рекурсивной склейки, 'shallow' для простой склейки, false для перезаписи, по умолчанию false.
Издает исключение
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
config()source public
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 - Ключ для получения/установки или полный массив конфигурации.
- mixed|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Выполнять рекурсивное объединение или перезапись существующей конфигурации, по умолчанию true.
Возвращает
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Издает исключение
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 - Ключ для установки или полный массив конфигурации.
- mixed|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 для всей конфигурации.
- mixed
$defaultнеобязательно null - Значение, возвращаемое, когда ключ не существует.
Возвращает
mixedЗначение конфигурации, которое читается.
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 - Ключ для установки или полный массив конфигурации.
- mixed|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Выполнять рекурсивное объединение или перезапись существующей конфигурации, по умолчанию true.
Возвращает
$this
Издает исключение
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Подробное описание свойств
$_defaultConfigsource
protected массив
Конфигурация по умолчанию
Эти настройки объединяются с предоставленной пользователем конфигурацией при использовании поведения.
[
'implementedFinders' => ['translations' => 'findTranslations'],
'implementedMethods' => [
'locale' => 'locale',
'translationField' => 'translationField'
],
'fields' => [],
'translationTable' => 'I18n',
'defaultLocale' => '',
'referenceName' => '',
'allowEmptyTranslations' => true,
'onlyTranslated' => false,
'strategy' => 'subquery',
'tableLocator' => null,
'validator' => false
] $_localesource
protected строка
Имя языка, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
© 2005–2018 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.5/class-Cake.ORM.Behavior.TranslateBehavior.html