Spec-Zone.ru › CakePHP 4.2

Класс ShadowTableStrategy

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

Пространство имен: Cake\ORM\Behavior\Translate

Краткое описание свойств

  • $_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

    Удаляет пустые переводы, чтобы избежать сохранения.

END_OF_DOCUMENT_MARKER

Подробное описание методов

__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

Конфигурация для добавления полей.

Возвращает

bool

afterSave() public

afterSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity): void

Сбрасывает временное свойство _i18n после сохранения сущности.

Параметры

Cake\Event\EventInterface $event

Событие beforeSave, которое было запущено.

Cake\Datasource\EntityInterface $entity

Сущность, которая будет сохранена.

Возвращает

void

beforeFind() 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

Параметры запроса.

Возвращает

void

beforeSave() public

beforeSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, ArrayObject $options): void

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

Параметры

Cake\Event\EventInterface $event

Событие beforeSave, которое было запущено.

Cake\Datasource\EntityInterface $entity

Сущность, которая будет сохранена.

ArrayObject $options

параметры, переданные методу сохранения.

Возвращает

void

buildMarshalMap() 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

Возвращает

array

bundleTranslatedFields() protected

bundleTranslatedFields(Cake\Datasource\EntityInterface $entity): void

Вспомогательный метод, используемый для генерации нескольких сущностей переведенных полей из данных, найденных в свойстве _translations в переданной сущности. Результат будет помещен в его свойство _i18n.

Параметры

Cake\Datasource\EntityInterface $entity

Сущность.

Возвращает

void

configShallow() 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

Значение для установки.

Возвращает

$this

getConfig() 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

Возвращаемое значение, когда ключ не существует.

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

Возвращает конфигурацию для данного ключа.

Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.

Параметры

string $key

Ключ для получения.

Возвращает

mixed

Выбрасывает

InvalidArgumentException

getLocale() public

getLocale(): string

Возвращает текущий язык.

Если явное значение для locale не было установлено с помощью setLocale(), этот метод вернет глобально настроенный язык.

Возвращает

string

См. также

\Cake\I18n\I18n::getLocale()
\Cake\ORM\Behavior\TranslateBehavior::setLocale()

getTableLocator() public

getTableLocator(): Cake\ORM\Locator\LocatorInterface

Получает локатор таблиц.

Возвращает

Cake\ORM\Locator\LocatorInterface

getTranslationTable() public

getTranslationTable(): Cake\ORM\Table

Возвращает экземпляр таблицы перевода.

Возвращает

Cake\ORM\Table

groupTranslations() public

groupTranslations(Cake\Datasource\ResultSetInterface $results): Cake\Collection\CollectionInterface

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

Параметры

Cake\Datasource\ResultSetInterface $results

Результаты для изменения.

Возвращает

Cake\Collection\CollectionInterface

iterateClause() protected

iterateClause(Cake\ORM\Query $query, string $name = '', array $config = []): bool

Итерировать по фрагменту для алиасирования полей.

Цель здесь — прозрачно предотвратить ошибки неоднозначных полей, добавляя префикс соответствующего алиаса таблицы к полям. В настоящее время этот метод ожидает получить только фрагмент порядка.

Параметры

Cake\ORM\Query $query

запрос для проверки.

string $name опционально

Имя фрагмента.

array $config опционально

Конфигурация для добавления полей.

Возвращает

bool

mainFields() protected

mainFields(): array

Лениво определить и вернуть основные поля таблицы.

Возвращает

array

rowMapper() protected

rowMapper(Cake\Datasource\ResultSetInterface $results, string $locale): Cake\Collection\CollectionInterface

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

Параметры

Cake\Datasource\ResultSetInterface $results

Результаты для сопоставления.

string $locale

Строка языка

Возвращает

Cake\Collection\CollectionInterface

setConfig() 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 для сброса текущего языка и для возврата к использованию глобально настроенного языка.

Возвращает

$this

setTableLocator() public

setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this

Устанавливает локатор таблицы.

Параметры

Cake\ORM\Locator\LocatorInterface $tableLocator

Экземпляр LocatorInterface.

Возвращает

$this

setupAssociations() protected

setupAssociations(): void

Создать ассоциацию hasMany для всех записей.

Не создавайте здесь ассоциацию hasOne, так как условия объединения изменяются в методе before find — поэтому создавайте/изменяйте их там.

Возвращает

void

setupHasOneAssociation() protected

setupHasOneAssociation(string $locale, ArrayObject $options): void

Создать ассоциацию hasOne для записи с требуемым языком.

Параметры

string $locale

Язык

ArrayObject $options

Параметры поиска

Возвращает

void

translatedFields() protected

translatedFields(): array

Лениво определить и вернуть поля таблицы переводов.

Возвращает

array

translationField() public

translationField(string $field): string

Возвращает полное имя поля с алиасом для переведенных полей.

Если запрошенное поле настроено как поле перевода, возвращается поле с алиасом соответствующей ассоциации. Для всех остальных полей возвращается имя поля с алиасом таблицы.

Параметры

string $field

Имя поля, которое нужно алиасить.

Возвращает

string

traverseClause() protected

traverseClause(Cake\ORM\Query $query, string $name = '', array $config = []): bool

Итерироваться по фрагменту для алиасирования полей.

Цель здесь — прозрачно предотвратить ошибки неоднозначных полей, добавляя префикс соответствующего алиаса таблицы к полям. В настоящее время этот метод ожидает получить только фрагмент where.

Параметры

Cake\ORM\Query $query

запрос для проверки.

string $name опционально

Имя фрагмента.

array $config опционально

Конфигурация для добавления полей.

Возвращает

bool

unsetEmptyFields() 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

Spec-Zone.ru

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