Класс TranslateBehavior
Это поведение предоставляет способ перевода динамических данных, сохраняя переводы в отдельной таблице, связанной с исходной записью из другой. Переведенные поля можно настроить для переопределения полей в основной таблице при извлечении или отложить их в другое свойство для того же сущности.
Если вы хотите переопределить поля, вам необходимо вызвать метод locale в этом поведении для установки языка, который вы хотите получить из таблицы переводов.
Если вы хотите получить все или определенные языки для каждой из извлеченных записей, вы можете использовать пользовательские translations поисковые методы, которые доступны для таблицы.
- Cake\ORM\Behavior implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
-
Cake\ORM\Behavior\TranslateBehavior uses Cake\ORM\Locator\LocatorAwareTrait
Краткое описание свойств
-
$_defaultConfigprotectedКонфигурация по умолчаниюarray -
$_localeprotectedstringИмя локале, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
- Экземпляр таблицы
$_tableprotected - Экземпляр таблицы, ответственный за перевод
$_translationTableprotected
Наследованные свойства
Краткое описание методов
- __construct() publicКонструктор
- _bundleTranslatedFields() protected
Вспомогательный метод, используемый для генерации нескольких сущностей переведенных полей из данных, найденных в свойстве
_translationsв переданной сущности. Результат будет помещен в свойство_i18n - _findExistingTranslations() protected
Возвращает идентификаторы, найденные для каждого из массивов условий, переданных для таблицы переводов. Каждая запись индексируется соответствующей позицией в массиве условий.
- _referenceName() protectedОпределение имени ссылки для использования в данной таблице
- _rowMapper() protected
Изменяет результаты поиска в таблице, чтобы объединить переведенные поля в каждую сущность для заданной локале.
- afterSave() publicУдаляет временное свойство
_i18nпосле сохранения сущности - beforeFind() public
Метод обратного вызова, который слушает событие
beforeFindв связанной таблице. Он изменяет переданный запрос, загружая переведенные поля с помощью eager loading и добавляя форматировщик для копирования значений в записи основной таблицы. - beforeSave() public
Изменяет сущность перед сохранением, чтобы переведенные поля также сохранились в базе данных.
- findTranslations() public
Пользовательский метод поиска, используемый для извлечения всех переводов для найденных записей. Извлеченные переводы можно фильтровать по локале, передав ключ
localesв массиве опций. - groupTranslations() public
Изменяет результаты поиска в таблице, чтобы объединить полные записи переводов в каждую сущность под ключом
_translations. - initialize() publicМетод инициализации
- locale() public
Устанавливает все будущие поиски для связанной таблицы, чтобы также извлекать переведенные поля для переданной локале. Если значение не передано, возвращает текущую конфигурированную локале.
- setupFieldAssociations() 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\CollectionafterSave()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 - Опции, переданные методу сохранения
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\Collectioninitialize()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
Методы, унаследованные от 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Дедублированный список данных конфигурации.
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
tableLocator()source public
tableLocator( Cake\ORM\Locator\LocatorInterface $tableLocator null )
Устанавливает локатор таблиц. Если параметры не переданы, возвращает текущий используемый локатор.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocatorопционально null - Экземпляр LocatorInterface.
Возвращает
Cake\ORM\Locator\LocatorInterfaceМетоды, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации
Параметры
- string
$key - Ключ для удаления.
Выбрасывает
Cake\Core\Exception\Exceptionесли пытаетесь переписать существующую конфигурацию
_configRead()source protected
_configRead( string|null $key )
Чтение переменной конфигурации
Параметры
- string|null
$key - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Записать переменную конфигурации
Параметры
- строка|массив
$key - Ключ для записи.
- смешанное
$value - Значение для записи.
- булево|строка
$mergeнеобязательно 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']);
Параметры
- строка|массив|null
$keyнеобязательно null - Ключ для получения/установки или весь массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
- булево
$mergeнеобязательно true - Рекурсивное слияние или перезапись существующей конфигурации, по умолчанию истинно.
Возвращаемое значение
смешанноеЗначение конфигурации, которое читается, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value null )
Слияние предоставленной конфигурации с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка определенного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или весь массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
Возвращаемое значение
$this Сам объект.
Подробное описание свойств
$_defaultConfigsource
protected массив
Значения конфигурации по умолчанию
Они объединяются с пользовательской конфигурацией при использовании поведения.
[
'implementedFinders' => ['translations' => 'findTranslations'],
'implementedMethods' => ['locale' => 'locale'],
'fields' => [],
'translationTable' => 'I18n',
'defaultLocale' => '',
'referenceName' => '',
'allowEmptyTranslations' => true,
'onlyTranslated' => false,
'strategy' => 'subquery',
'tableLocator' => null
] $_localesource
protected строка
Имя локали, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.ORM.Behavior.TranslateBehavior.html