Spec-Zone.ru › CakePHP 3.5

Класс TranslateBehavior

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

Если вы хотите переопределить поля, вам необходимо вызвать метод locale в этом поведении для установки языка, который вы хотите получить из таблицы переводов.

Если вы хотите получить все или определенные языки для каждой из полученных записей, вы можете использовать пользовательские translations поисковики, доступные для таблицы.

Cake\ORM\Behavior реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait
Extended by Cake\ORM\Behavior\TranslateBehavior реализует Cake\ORM\PropertyMarshalInterface использует 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 в массиве параметров.

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

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

locale( string|null $locale null )

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

Параметры

string|null $locale необязательно null
Язык для извлечения переведенных записей.

Возвращает

string

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

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

Возвращает

array
END_OF_DOCUMENT_MARKER

implementedMethods()source public

implementedMethods( )

implementedMethods

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

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

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

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

Возвращает

array

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

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

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

$_tablesource

protected Cake\ORM\Table

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

$_translationTablesource

protected Cake\ORM\Table

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

END_OF_DOCUMENT_MARKER

© 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

Spec-Zone.ru

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