Класс 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' => trueв опции, предоставленные для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 - параметры, переданные методу сохранения
buildMarshalMap()source public
buildMarshalMap( Cake\ORM\Marshaller $marshaller , array $map , array $options )
Добавляет обработчики маршалинга _translations, если маршалинг перевода включен. Вам необходимо явно включить маршалинг перевода, добавив 'translations' => true в параметры, предоставленные Table::newEntity() или Table::patchEntity().
Параметры
-
Cake\ORM\Marshaller$marshaller - Маршаллинг таблицы, к которой прикреплено поведение.
- array
$map - Создаваемая карта свойств.
- array
$options - Массив параметров, используемый в вызове маршалинга.
Возвращает
массивКарта
[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 - Язык для загрузки переведенных записей
Возвращает
строка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 - Имя поля для алиасирования.
Возвращает
строкаМетоды, унаследованные от Cake\ORM\Behavior
_reflectionCache()source protected
_reflectionCache( )
Получает методы, реализованные этим поведением
Использует метод implementedEvents(), чтобы исключить методы обратного вызова. Методы, начинающиеся с _ , будут проигнорированы, как и методы, объявленные в Cake\ORM\Behavior
Возвращает
массив_resolveMethodAliases()source protected
_resolveMethodAliases( string $key , array $defaults , array $config )
Удаляет алиасованные методы, которые в противном случае были бы дублированы пользовательской конфигурацией.
Параметры
- string
$key - Ключ для фильтрации.
- array
$defaults - Стандартные отображения методов.
- array
$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 дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. См. примеры в базовых поведениих.
Возвращает
массивimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение alias->имя_метода реализованных методов поведения. Пример:
[ '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$tableLocatoroptional 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 )
Записывает ключ конфигурации.
Параметры
- string|array
$key - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|string
$mergeoptional 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() вместо этого.Параметры
- string|array|null
$keyoptional null - Ключ для получения/установки или полный массив настроек.
- mixed|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional 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']);
Параметры
- string|array
$key - Ключ для установки или полный массив настроек.
- mixed|null
$valueoptional 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'); Параметры
- string|null
$keyoptional null - Ключ для получения или null для всей конфигурации.
- mixed
$defaultoptional 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']);
Параметры
- string|array
$key - Ключ для установки или полный массив настроек.
- mixed|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional true - Выполнять рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.
Возвращает
$this
Использует
Cake\Core\Exception\ExceptionПри попытке установить неверный ключ.
Подробное описание свойств
$_defaultConfigsource
protected array
Конфигурация по умолчанию
Эти значения сливаются с предоставленной пользователем конфигурацией при использовании поведения.
[
'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 string
Имя локального языка, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
© 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.4/class-Cake.ORM.Behavior.TranslateBehavior.html