Spec-Zone.ru › CakePHP 3.4

Класс TranslateBehavior

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

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

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

Cake\ORM\Behavior implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
Extended by 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' => 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\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
Язык для загрузки переведенных записей

Возвращает

строка

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

Возвращает

массив
END_OF_DOCUMENT_MARKER

implementedMethods()source public

implementedMethods( )

implementedMethods

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

[
   '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 optional 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 $merge optional 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 $key optional null
Ключ для получения/установки или полный массив настроек.
mixed|null $value optional null
Значение для установки.
boolean $merge optional 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 $value optional 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 $key optional null
Ключ для получения или null для всей конфигурации.
mixed $default optional 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 $value optional null
Значение для установки.
boolean $merge optional 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

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

$_tablesource

protected Cake\ORM\Table

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

$_translationTablesource

protected Cake\ORM\Table

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

END_OF_DOCUMENT_MARKER

© 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

Spec-Zone.ru

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