Spec-Zone.ru › CakePHP 3.8

Класс 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
Пространство имён: Cake\ORM\Behavior
Расположение: ORM/Behavior/TranslateBehavior.php

Краткое описание свойств

  • $_defaultConfig protected
    array
    Конфигурация по умолчанию
  • $_locale protected
    string

    Имя локале, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов

  • $_table protected
    Cake\ORM\Table
    Экземпляр таблицы
  • $_translationTable protected
    Cake\ORM\Table
    Экземпляр таблицы, отвечающей за перевод

Унаследованные свойства

  • _reflectionCache _config, _configInitialized _tableLocator

Краткое описание методов

  • __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
    Обработка инициализации
  • locale() public deprecated

    Устанавливает все будущие поиски для связанной таблицы, чтобы также извлечь переведенные поля для указанной локале. Если значение не передано, оно возвращает текущую конфигурированную локаль.

  • 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
END_OF_DOCUMENT_MARKER

_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\Query

getLocale()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\CollectionInterface

initialize()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
Язык для получения переведенных записей

Возвращает

string

setLocale()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-locale
https://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
END_OF_DOCUMENT_MARKER

_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 дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных бихевиорах.

Возвращает

массив

Исключения

ReflectionException

implementedMethods()source public

implementedMethods( )

implementedMethods

Предоставляет отображение алиас->имя_метода для реализуемых бихевиором методов. Пример:

[
   'method' => 'method',
   'aliasedmethod' => 'somethingElse'
 ]

В приведенном выше примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()

Рекомендуется (но не обязательно) определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных бихевиорах.

Возвращает

массив

Исключения

ReflectionException

verifyConfig()source public

verifyConfig( )

verifyConfig

Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые объекты.

Исключения

Cake\Core\Exception\Exception
если конфигурация неверна

Методы, используемые из Cake\ORM\Locator\LocatorAwareTrait

getTableLocator()source public

getTableLocator( )

Получить локатор таблиц.

Возвращает

Cake\ORM\Locator\LocatorInterface

setTableLocator()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, если ключ не существует.
END_OF_DOCUMENT_MARKER

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 строка

Имя локали, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов

$_tablesource

protected Cake\ORM\Table

Экземпляр таблицы

$_translationTablesource

protected Cake\ORM\Table

Экземпляр таблицы, отвечающий за перевод

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API