Класс EavStrategy
Этот класс предоставляет способ перевода динамических данных, храня переводы в отдельной таблице, связанной с исходной записью из другой. Переведенные поля можно настроить для переопределения полей в основной таблице при извлечении или отложить их в другое свойство для того же сущности.
Если вы хотите переопределить поля, вам нужно вызвать метод locale в этом поведении для установки языка, который вы хотите извлечь из таблицы переводов.
Если вы хотите получить все или определенные языки для каждой из извлеченных записей, вы можете использовать пользовательский translations поиск TranslateBehavior, который доступен для таблицы.
Краткое описание свойств
- $_config protected
arrayКонфигурация выполнения
- $_configInitialized protected
boolБулево значение, указывающее, была ли конфигурация настроена по умолчанию
- $_defaultConfig protected
arrayКонфигурация по умолчанию
- $_tableLocator protected
Cake\ORM\Locator\LocatorInterface|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в связанной таблице. Он модифицирует переданный запрос, загружая переведенные поля с помощью eager loading и добавляя форматировщик для копирования значений в записи основной таблицы. -
beforeSave() public
Модифицирует сущность перед сохранением, чтобы переведенные поля также сохранялись в базе данных.
-
buildMarshalMap() public
Создает набор свойств, которые должны быть включены в процесс маппинга.
-
bundleTranslatedFields() protected
Вспомогательный метод, используемый для создания нескольких переведенных сущностей полей из данных, найденных в свойстве
_translationsв переданной сущности. Результат будет помещен в его свойство_i18n. -
configShallow() public
Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от
config(), который выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
findExistingTranslations() protected
Возвращает ID, найденные для каждого из массивов условий, переданных для таблицы переводов. Каждая запись индексируется соответствующим положением в массиве условий.
-
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 $config = [])
Конструктор
Параметры
-
Cake\ORM\Table$table Таблица, к которой прикреплена эта стратегия.
-
array$config необязательно Настройка для этой стратегии.
_configDelete() protected
_configDelete(string $key): void
Удаляет один ключ конфигурации.
Параметры
-
string$key Ключ для удаления.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли попытка перезаписать существующую конфигурацию
_configRead() protected
_configRead(string|null $key): mixed
Читает ключ конфигурации.
Параметры
-
string|null$key Ключ для чтения.
Возвращает
mixed_configWrite() protected
_configWrite(string|array $key, mixed $value, bool|string $merge = false): void
Записывает ключ конфигурации.
Параметры
-
string|array$key Ключ для записи.
-
mixed$value Значение для записи.
-
bool|string$merge необязательно True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли попытка перезаписи существующей конфигурации
afterSave() public
afterSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity): void
Сбрасывает временное свойство _i18n после сохранения сущности
Параметры
-
Cake\Event\EventInterface$event Событие beforeSave, которое было вызвано
-
Cake\Datasource\EntityInterface$entity Сущность, которая будет сохранена
Возвращает
voidbeforeFind() public
beforeFind(Cake\Event\EventInterface $event, Cake\ORM\Query $query, ArrayObject $options): void
Метод обратного вызова, который слушает событие beforeFind в связанной таблице. Он изменяет переданный запрос, загружая жадно переведенные поля и добавляя форматировщик для копирования значений в записи основной таблицы.
Параметры
-
Cake\Event\EventInterface$event Событие beforeFind, которое было вызвано.
-
Cake\ORM\Query$query Запрос
-
ArrayObject$options Параметры запроса
Возвращает
voidbeforeSave() public
beforeSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, ArrayObject $options): void
Изменяет сущность перед сохранением, чтобы переведенные поля тоже сохранялись в базе данных.
Параметры
-
Cake\Event\EventInterface$event Событие beforeSave, которое было вызвано
-
Cake\Datasource\EntityInterface$entity Сущность, которая будет сохранена
-
ArrayObject$options параметры, переданные в метод сохранения
Возвращает
voidbuildMarshalMap() public
buildMarshalMap(Cake\ORM\Marshaller $marshaller, array $map, array $options): array
Создает набор свойств, которые должны быть включены в процесс маршалинга.
Добавить в _translations маршаллинг обработчики. Вы можете отключить маршаллинг переводов, установив 'translations' => false в параметрах, предоставленных Table::newEntity() или Table::patchEntity().
Параметры
-
Cake\ORM\Marshaller$marshaller Маршаллер таблицы, к которой прикреплено поведение.
-
array$map Строящаяся карта свойств.
-
array$options Массив параметров, используемый в вызове маршалинга.
Возвращает
arraybundleTranslatedFields() protected
bundleTranslatedFields(Cake\Datasource\EntityInterface $entity): void
Вспомогательный метод, используемый для создания нескольких сущностей переведенных полей из данных, найденных в свойстве _translations в переданной сущности. Результат будет помещен в его свойство _i18n.
Параметры
-
Cake\Datasource\EntityInterface$entity Сущность
Возвращает
voidconfigShallow() public
configShallow(string|array $key, mixed|null $value = null): $this
Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
string|array$key Ключ для установки или весь массив конфигураций.
-
mixed|null$value необязательно Значение для установки.
Возвращает
$thisfindExistingTranslations() protected
findExistingTranslations(array $ruleSet): array
Возвращает идентификаторы, найденные для каждого из массивов условий, переданных для таблицы переводов. Каждая запись индексируется соответствующим положением в массиве условий.
Параметры
-
array$ruleSet Массив массивов условий, используемых для поиска каждого
Возвращает
arraygetConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
-
string|null$key необязательно Ключ для получения или null для всей конфигурации.
-
mixed$default необязательно Возвращаемое значение, когда ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для этого конкретного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedВыбрасывает
InvalidArgumentExceptiongetLocale() public
getLocale(): string
Возвращает текущий язык.
Если язык не был явно задан с помощью setLocale(), этот метод вернет текущий глобальный язык, настроенный в данный момент.
Возвращает
stringСм. также
\Cake\ORM\Behavior\TranslateBehavior::setLocale()
getTableLocator() public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
Получает локатор таблицы.
Возвращает
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(string|array $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']);
Параметры
-
string|array$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
Конфигурация во время выполнения
Тип
array$_configInitialized protected
Настройка свойства уже настроена по умолчанию
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию
Эти значения объединяются с предоставленной пользователем конфигурацией.
Тип
array$_tableLocator protected
Экземпляр локатора таблицы
Тип
Cake\ORM\Locator\LocatorInterface|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.2/class-Cake.ORM.Behavior.Translate.EavStrategy.html