Класс ShadowTableStrategy
Этот класс предоставляет способ перевода динамических данных, сохраняя переводы в отдельной таблице-тени, где каждая строка соответствует строке основной таблицы.
Краткое описание свойств
- $_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
Записывает ключ конфигурации.
-
addFieldsToQuery() protected
Добавляет поля перевода в запрос.
-
afterSave() public
Сбрасывает временное свойство
_i18nпосле сохранения сущности -
beforeFind() public
Метод обратного вызова, который прослушивает событие
beforeFindв связанной таблице. Он изменяет переданный запрос, загружая переведённые поля с помощью eager loading и добавляя форматтер для копирования значений в записи основной таблицы. -
beforeSave() public
Изменяет сущность перед сохранением, чтобы переведённые поля также сохранялись в базе данных.
-
buildMarshalMap() public
Создаёт набор свойств, которые должны быть включены в процесс маршалинга.
-
bundleTranslatedFields() protected
Вспомогательный метод, используемый для генерации нескольких сущностей переведённых полей из данных, найденных в свойстве
_translationsпереданной сущности. Результат будет помещён в свойство_i18n. -
configShallow() public
Объединяет предоставленную конфигурацию с существующей. В отличие от
config(), который выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для данного ключа.
-
getLocale() public
Возвращает текущую локаль.
-
getTableLocator() public
Получает локатор таблицы.
-
getTranslationTable() public
Возвращает экземпляр таблицы переводов.
-
groupTranslations() public
Изменяет результаты поиска в таблице, чтобы объединить полные записи переводов в каждую сущность под ключом
_translations. -
iterateClause() protected
Итерирует по фрагменту запроса для присвоения псевдонимов полям.
-
mainFields() protected
Лениво определяет и возвращает поля основной таблицы.
-
rowMapper() protected
Изменяет результаты поиска в таблице, чтобы объединить переведённые поля в каждую сущность для заданной локали.
-
setConfig() public
Устанавливает конфигурацию.
-
setLocale() public
Устанавливает используемую локаль.
-
setTableLocator() public
Устанавливает локатор таблицы.
-
setupAssociations() protected
Создаёт ассоциацию hasMany для всех записей.
-
setupHasOneAssociation() protected
Создаёт ассоциацию hasOne для записи с необходимой локалью.
-
translatedFields() protected
Лениво определяет и возвращает поля таблицы переводов.
-
translationField() public
Возвращает полное имя поля с псевдонимом для переведённых полей.
-
traverseClause() protected
Итерируется по фрагменту запроса для присвоения псевдонимов полям.
-
unsetEmptyFields() protected
Удаляет пустые переводы, чтобы избежать сохранения.
Подробное описание методов
__construct() public
__construct(Cake\ORM\Table $table, array $config = [])
Конструктор
Параметры
-
Cake\ORM\Table$table Экземпляр таблицы.
-
array$config optional Настройка.
_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 optional Истина для рекурсивного слияния, 'shallow' для простого слияния, ложь для перезаписи, по умолчанию ложь.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли происходит попытка перезаписи существующей конфигурации
addFieldsToQuery() protected
addFieldsToQuery(Cake\ORM\Query $query, array $config): bool
Добавляет поля перевода в запрос.
Если запрос использует автополя (прямо или косвенно), сначала добавьте поля основной таблицы в запрос.
Добавляйте переводы только для полей, которые находятся в основной таблице, хотя поле locale всегда добавляйте.
Параметры
-
Cake\ORM\Query$query Запрос для проверки.
-
array$config Конфигурация для добавления полей.
Возвращает
boolafterSave() 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 optional Значение для установки.
Возвращает
$thisgetConfig() 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 optional Ключ для получения или null для всей конфигурации.
-
mixed$default optional Возвращаемое значение, когда ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для данного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedВыбрасывает
InvalidArgumentExceptiongetLocale() public
getLocale(): string
Возвращает текущий язык.
Если явное значение для locale не было установлено с помощью 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\CollectionInterfaceiterateClause() protected
iterateClause(Cake\ORM\Query $query, string $name = '', array $config = []): bool
Итерировать по фрагменту для алиасирования полей.
Цель здесь — прозрачно предотвратить ошибки неоднозначных полей, добавляя префикс соответствующего алиаса таблицы к полям. В настоящее время этот метод ожидает получить только фрагмент порядка.
Параметры
-
Cake\ORM\Query$query запрос для проверки.
-
string$name опционально Имя фрагмента.
-
array$config опционально Конфигурация для добавления полей.
Возвращает
boolmainFields() protected
mainFields(): array
Лениво определить и вернуть основные поля таблицы.
Возвращает
arrayrowMapper() 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 опционально Значение для установки.
-
bool$merge опционально Выполнять ли рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию — 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
Создать ассоциацию hasMany для всех записей.
Не создавайте здесь ассоциацию hasOne, так как условия объединения изменяются в методе before find — поэтому создавайте/изменяйте их там.
Возвращает
voidsetupHasOneAssociation() protected
setupHasOneAssociation(string $locale, ArrayObject $options): void
Создать ассоциацию hasOne для записи с требуемым языком.
Параметры
-
string$locale Язык
-
ArrayObject$options Параметры поиска
Возвращает
voidtranslatedFields() protected
translatedFields(): array
Лениво определить и вернуть поля таблицы переводов.
Возвращает
arraytranslationField() public
translationField(string $field): string
Возвращает полное имя поля с алиасом для переведенных полей.
Если запрошенное поле настроено как поле перевода, возвращается поле с алиасом соответствующей ассоциации. Для всех остальных полей возвращается имя поля с алиасом таблицы.
Параметры
-
string$field Имя поля, которое нужно алиасить.
Возвращает
stringtraverseClause() protected
traverseClause(Cake\ORM\Query $query, string $name = '', array $config = []): bool
Итерироваться по фрагменту для алиасирования полей.
Цель здесь — прозрачно предотвратить ошибки неоднозначных полей, добавляя префикс соответствующего алиаса таблицы к полям. В настоящее время этот метод ожидает получить только фрагмент where.
Параметры
-
Cake\ORM\Query$query запрос для проверки.
-
string$name опционально Имя фрагмента.
-
array$config опционально Конфигурация для добавления полей.
Возвращает
boolunsetEmptyFields() 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.ShadowTableStrategy.html