Class EavStrategy
Этот класс предоставляет способ перевода динамических данных, храня переводы в отдельной таблице, связанной с исходной записью из другой. Переведенные поля можно настроить для переопределения полей в основной таблице при извлечении или отложить в другое свойство для того же сущности.
Если вы хотите переопределить поля, вам нужно вызвать метод locale в этом поведении для установки языка, который вы хотите получить из таблицы переводов.
Если вы хотите получить все или определённые языки для каждой из извлечённых записей, вы можете использовать пользовательский поиск translations таблицы TranslateBehavior, который доступен для таблицы.
Краткое описание свойств
- $_config protected
array<string, mixed>Конфигурация выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация уже настроена по умолчанию
- $_defaultConfig protected
array<string, mixed>Конфигурация по умолчанию
- $_tableLocator protected
Cake\ORM\Locator\LocatorInterface|nullЭкземпляр локейтора таблиц
- $defaultTable protected
string|nullПсевдоним таблицы по умолчанию для данного объекта.
- $locale protected
string|nullИмя локали, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов
- $table protected
Cake\ORM\TableЭкземпляр таблицы
- $translationTable protected
Cake\ORM\TableЭкземпляр таблицы, ответственной за перевод
Краткое описание методов
-
__construct() public
Конструктор
-
_configDelete() protected
Удаляет один ключ конфигурации.
-
_configRead() protected
Читает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
afterSave() public
Сбрасывает временное свойство
_i18nпосле сохранения сущности -
beforeFind() public
Метод обратного вызова, который слушает событие
beforeFindв связанной таблице. Он изменяет переданный запрос, загружая переведенные поля и добавляя форматировщик для копирования значений в записи основной таблицы. -
beforeSave() public
Изменяет сущность перед сохранением, чтобы переведенные поля тоже сохранялись в базе данных.
-
buildMarshalMap() public
Создаёт набор свойств, которые должны быть включены в процесс маппинга.
-
bundleTranslatedFields() protected
Вспомогательный метод, используемый для генерации нескольких сущностей переведенных полей из данных, найденных в свойстве
_translationsв переданной сущности. Результат будет помещён в его свойство_i18n. -
configShallow() public
Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от
config(), который выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
fetchTable() public
Удобный метод для получения экземпляра таблицы.
-
findExistingTranslations() protected
Возвращает идентификаторы, найденные для каждого из массивов условий, переданных для таблицы переводов. Каждая запись индексируется соответствующим положением в массиве условий.
-
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для определённого ключа.
-
getLocale() public
Возвращает текущую локаль.
-
getTableLocator() public
Получает локейтор таблиц.
-
getTranslationTable() public
Возвращает экземпляр таблицы переводов.
-
groupTranslations() public
Изменяет результаты поиска таблицы, чтобы объединить полные записи переводов в каждую сущность под ключом
_translations. -
rowMapper() protected
Изменяет результаты поиска таблицы, чтобы объединить переведенные поля в каждую сущность для заданной локали.
-
setConfig() public
Устанавливает конфигурацию.
-
setLocale() public
Устанавливает локаль для использования.
-
setTableLocator() public
Устанавливает локейтор таблиц.
-
setupAssociations() protected
Создаёт связи между связанной таблицей и каждым полем, переданным в этот метод.
-
translationField() public
Возвращает полное алиасированное имя поля для переведенных полей.
-
unsetEmptyFields() protected
Удаляет пустые переводы, чтобы избежать сохранения.
Подробное описание методов
__construct() public
__construct(Cake\ORM\Table $table, array<string, mixed> $config = [])
Конструктор
Parameters
-
Cake\ORM\Table$table Таблица, к которой прикреплена эта стратегия.
-
array<string, mixed>$config optional Конфигурация для этой стратегии.
_configDelete() protected
_configDelete(string $key): void
Удаляет один ключ конфигурации.
Parameters
-
string$key Ключ для удаления.
Returns
voidThrows
Cake\Core\Exception\CakeExceptionесли пытаетесь перезаписать существующую конфигурацию
_configRead() protected
_configRead(string|null $key): mixed
Читает ключ конфигурации.
Parameters
-
string|null$key Ключ для чтения.
Returns
mixed_configWrite() protected
_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает ключ конфигурации.
Parameters
-
array<string, mixed>|string$key Ключ для записи.
-
mixed$value Значение для записи.
-
string|bool$merge optional True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Returns
voidThrows
Cake\Core\Exception\CakeExceptionесли пытаетесь перезаписать существующую конфигурацию
afterSave() public
afterSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity): void
Сбрасывает временное свойство _i18n после того, как сущность была сохранена
Parameters
-
Cake\Event\EventInterface$event Событие beforeSave, которое было вызвано
-
Cake\Datasource\EntityInterface$entity Сущность, которая будет сохранена
Returns
voidbeforeFind() public
beforeFind(Cake\Event\EventInterface $event, Cake\ORM\Query $query, ArrayObject $options): void
Метод обратного вызова, который прослушивает событие beforeFind в привязанной таблице. Он изменяет переданный запрос, загружая поля перевода и добавляя форматировщик для копирования значений в основные записи таблицы.
Parameters
-
Cake\Event\EventInterface$event Событие beforeFind, которое было вызвано.
-
Cake\ORM\Query$query Запрос
-
ArrayObject$options Параметры для запроса
Returns
voidbeforeSave() public
beforeSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, ArrayObject $options): void
Изменяет сущность перед её сохранением, чтобы переведённые поля также сохранялись в базе данных.
Parameters
-
Cake\Event\EventInterface$event Событие beforeSave, которое было вызвано
-
Cake\Datasource\EntityInterface$entity Сущность, которая будет сохранена
-
ArrayObject$options Параметры, переданные в метод save
Returns
voidbuildMarshalMap() public
buildMarshalMap(Cake\ORM\Marshaller $marshaller, array $map, array<string, mixed> $options): array
Создает набор свойств, которые должны быть включены в процесс маршалинга.
Добавляет обработчики маршалинга _translations. Вы можете отключить маршалинг переводов, установив 'translations' => false в параметрах, предоставленных Table::newEntity() или Table::patchEntity().
Parameters
-
Cake\ORM\Marshaller$marshaller Маршалер таблицы, к которой прикреплено поведение.
-
array$map Создаваемая карта свойств.
-
array<string, mixed>$options Массив параметров, используемый в вызове маршалинга.
Returns
arraybundleTranslatedFields() protected
bundleTranslatedFields(Cake\Datasource\EntityInterface $entity): void
Вспомогательный метод, используемый для генерации нескольких сущностей переведённых полей из данных, найденных в свойстве _translations в переданной сущности. Результат будет помещён в его свойство _i18n.
Parameters
-
Cake\Datasource\EntityInterface$entity Сущность
Returns
voidconfigShallow() public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
Слияние предоставленной конфигурации с существующей. В отличие от config(), который выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Parameters
-
array<string, mixed>|string$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
Returns
$thisfetchTable() public
fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table
Удобный метод для получения экземпляра таблицы.
Parameters
-
string|null$alias optional Имя псевдонима, которое вы хотите получить. Должно быть в формате CamelCase. Если
null, то используется значение свойства $defaultTable.-
array<string, mixed>$options optional Параметры, с которыми вы хотите создать таблицу. Если таблица уже загружена, параметры реестра будут игнорироваться.
Returns
Cake\ORM\TableThrows
Cake\Core\Exception\CakeExceptionЕсли аргумент `$alias` и свойство `$defaultTable` оба равны `null`.
See Also
findExistingTranslations() protected
findExistingTranslations(array $ruleSet): array
Возвращает найденные id для каждого из переданных массивов условий для таблицы переводов. Каждая запись индексируется соответствующей позицией в массиве условий.
Parameters
-
array$ruleSet Массив массивов условий, которые будут использоваться для поиска каждого
Returns
arraygetConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Usage
Чтение всей конфигурации:
$this->getConfig();
Чтение конкретного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Parameters
-
string|null$key optional Ключ для получения или null для всей конфигурации.
-
mixed$default optional Возвращаемое значение, когда ключ не существует.
Returns
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для этого конкретного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Parameters
-
string$key Ключ для получения.
Returns
mixedThrows
InvalidArgumentExceptiongetLocale() public
getLocale(): string
Возвращает текущий язык.
Если язык не был явно установлен через setLocale(), этот метод вернет текущий глобально настроенный язык.
Returns
stringSee Also
\Cake\ORM\Behavior\TranslateBehavior::setLocale()
getTableLocator() public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Получает локатор таблицы.
Returns
Cake\ORM\Locator\LocatorInterfacegetTranslationTable() public
getTranslationTable(): Cake\ORM\Table
Возвращает экземпляр таблицы переводов.
Возвращает
Cake\ORM\TablegroupTranslations() public
groupTranslations(Cake\Datasource\ResultSetInterface $results): Cake\Collection\CollectionInterface
Модифицирует результаты поиска в таблице, чтобы объединить записи полного перевода в каждую сущность под ключом _translations.
Параметры
-
Cake\Datasource\ResultSetInterface$results Результаты для модификации.
Возвращает
Cake\Collection\CollectionInterfacerowMapper() protected
rowMapper(Cake\Datasource\ResultSetInterface $results, string $locale): Cake\Collection\CollectionInterface
Модифицирует результаты поиска в таблице, чтобы объединить переведенные поля в каждую сущность для заданного языка.
Параметры
-
Cake\Datasource\ResultSetInterface$results Результаты для преобразования.
-
string$locale Строка языка
Возвращает
Cake\Collection\CollectionInterfacesetConfig() public
setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this
Устанавливает конфигурацию.
Использование
Установка определенного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или массив всех настроек.
-
mixed|null$value optional Значение для установки.
-
bool$merge optional Использовать рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.
Возвращает
$thisИсключения
Cake\Core\Exception\CakeExceptionПри попытке установить недопустимый ключ.
setLocale() public
setLocale(string|null $locale): $this
Устанавливает язык, который будет использоваться.
При извлечении записей используется язык, установленный с помощью этого метода. Аналогично, при сохранении данных, они сохраняются на этом языке.
Обратите внимание, что в случае, если у сущности есть свойство _locale, этот язык будет иметь приоритет над языком, установленным с помощью этого метода (и над глобально настроенным языком!).
Параметры
-
string|null$locale Язык, который будет использоваться для извлечения и сохранения записей. Передайте
null, чтобы сбросить текущий язык и вернуться к использованию глобально настроенного языка.
Возвращает
$thissetTableLocator() public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
Устанавливает локатор таблицы.
Параметры
-
Cake\ORM\Locator\LocatorInterface$tableLocator Экземпляр LocatorInterface.
Возвращает
$thissetupAssociations() protected
setupAssociations(): void
Создает связи между привязанной таблицей и каждым полем, переданным в этот метод.
Кроме того, создает связь i18n HasMany, которая будет использоваться для извлечения всех переводов для каждой записи в связанной таблице.
Возвращает
voidtranslationField() public
translationField(string $field): string
Возвращает полностью алиасноё имя поля для переведенных полей.
Если запрошенное поле настроено как поле перевода, возвращается поле content с алиасом соответствующей связи. Для всех других полей возвращается имя поля с алиасом таблицы.
Параметры
-
string$field Имя поля, которое нужно преобразовать.
Возвращает
stringunsetEmptyFields() protected
unsetEmptyFields(Cake\Datasource\EntityInterface $entity): void
Сбрасывает пустые переводы, чтобы избежать сохранения.
Должен вызываться только если $this->_config['allowEmptyTranslations'] имеет значение false.
Параметры
-
Cake\Datasource\EntityInterface$entity Сущность, в которой нужно проверить пустые поля переводов.
Возвращает
voidПодробное описание свойств
$_config protected
Конфигурация runtime
Тип
array<string, mixed>$_configInitialized protected
Настроено ли свойство конфигурации значениями по умолчанию
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию
Эти настройки объединяются с пользовательскими настройками.
Тип
array<string, mixed>$_tableLocator protected
Экземпляр локатора таблицы
Тип
Cake\ORM\Locator\LocatorInterface|null$defaultTable protected
Псевдоним таблицы по умолчанию для данного объекта.
Тип
string|null$locale protected
Имя языка, которое будет использоваться для переопределения полей в связанной таблице из таблицы переводов.
Тип
string|null$table protected
Экземпляр таблицы
Тип
Cake\ORM\Table$translationTable 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/4.3/class-Cake.ORM.Behavior.Translate.EavStrategy.html