Класс 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
Изменяет результаты поиска таблицы, чтобы объединить переведенные поля в каждую сущность для заданного языка.
- afterSave() publicОчищает временное свойство
_i18nпосле сохранения сущности - beforeFind() public
Метод обратного вызова, который прослушивает событие
beforeFindв связанной таблице. Он изменяет переданный запрос, загружая переведенные поля и добавляя обработчик для копирования значений в записи основной таблицы. - beforeSave() public
Изменяет сущность перед сохранением, чтобы переведенные поля также сохранились в базе данных.
- buildMarshalMap() public
Добавление обработчиков сопоставления _translations, если включено сопоставление переводов. Вам необходимо явно включить сопоставление переводов, добавив
'translations' => trueв опции, предоставленные дляTable::newEntity()илиTable::patchEntity() - 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), однако для объектов автотаблиц оно определяется по таблице базы данных, к которой указывает объект - или в крайнем случае, по алиасу объекта автотаблицы.
Параметры
-
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 в связанной таблице. Он изменяет переданный запрос, жадно загружая переведённые поля и добавляя форматировщик для копирования значений в записи основной таблицы.
Параметры
-
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 - Параметры, переданные методу сохранения
buildMarshalMap()source public
buildMarshalMap( Cake\ORM\Marhshaller $marshaller , array $map , array $options )
Добавляет обработчики маппинга _translations, если включён маппинг переводов. Вам нужно явно включить маппинг переводов, добавив 'translations' => true в параметры, передаваемые Table::newEntity() или Table::patchEntity().
Параметры
- Cake\ORM\Marhshaller
$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\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 )
Удалить один ключ конфигурации
Параметры
- строка
$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 Истинно для рекурсивного слияния, 'shallow' для простого слияния, ложно для перезаписи, по умолчанию ложно.
Исключения
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,
'validator' => false
] $_localesource
protected строка
Имя языка, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
© 2005–2017 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.3/class-Cake.ORM.Behavior.TranslateBehavior.html