Класс TranslateBehavior
Это поведение предоставляет способ перевода динамических данных, храня переводы в отдельной таблице, связанной с исходной записью из другой. Поля, подлежащие переводу, могут быть настроены для переопределения полей в основной таблице при извлечении или помещены в другое свойство для той же сущности.
Если вы хотите переопределить поля, вам необходимо вызвать метод locale в этом поведении для установки языка, который вы хотите получить из таблицы переводов.
Если вы хотите получить все или определенные языки для каждой из извлечённых записей, вы можете использовать пользовательские translations методы поиска, которые доступны для таблицы.
Краткое описание свойств
- $_config protected
array<string, mixed>Конфигурация во время выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация свойств уже настроена со значениями по умолчанию
- $_defaultConfig protected
array<string, mixed>Конфигурация по умолчанию
- $_reflectionCache protected static
array<string, array>Кэш методов рефлексии для поведений.
- $_table protected
Cake\ORM\TableЭкземпляр таблицы.
- $defaultStrategyClass protected static
stringИмя класса стратегии по умолчанию.
- $strategy protected
Cake\ORM\Behavior\Translate\TranslateStrategyInterface|nullЭкземпляр стратегии перевода.
Краткое описание методов
-
__call() public
Делегирование вызовов методов экземпляру класса стратегии.
-
__construct() public
Конструктор
-
_configDelete() protected
Удаляет один ключ конфигурации.
-
_configRead() protected
Читает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
_reflectionCache() protected
Получение методов, реализованных этим поведением
-
_resolveMethodAliases() protected
Удаление алиасов методов, которые в противном случае будут дублироваться конфигурацией пользовательского интерфейса.
-
buildMarshalMap() public
Создание набора свойств, которые должны быть включены в процесс маршалинга.
-
configShallow() public
Объединение предоставленной конфигурации с существующей. В отличие от
config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
createStrategy() protected
Создание экземпляра стратегии.
-
findTranslations() public
Пользовательский метод поиска, используемый для извлечения всех переводов для найденных записей. Извлечённые переводы могут быть отфильтрованы по языку с помощью ключа
localesв массиве параметров. -
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для данного ключа.
-
getDefaultStrategyClass() public static
Получение имени класса стратегии по умолчанию.
-
getLocale() public
Возвращает текущий язык.
-
getStrategy() public
Получение экземпляра класса стратегии.
-
getTable() public deprecated
Получение экземпляра таблицы, к которой привязано это поведение.
-
implementedEvents() public
Получение обратных вызовов модели, которыми интересуется это поведение.
-
implementedFinders() public
implementedFinders
-
implementedMethods() public
implementedMethods
-
initialize() public
Метод инициализации
-
referenceName() protected
Определение имени ссылки, которое следует использовать для данной таблицы
-
setConfig() public
Установка конфигурации.
-
setDefaultStrategyClass() public static
Установка имени класса стратегии по умолчанию.
-
setLocale() public
Устанавливает язык, который должен использоваться для всех будущих операций поиска и сохранения в таблице, к которой привязано это поведение.
-
setStrategy() public
Установка экземпляра класса стратегии.
-
table() public
Получение экземпляра таблицы, к которой привязано это поведение.
-
translationField() public
Возвращает полное имя поля, используемое для перевода полей.
-
verifyConfig() public
verifyConfig
Краткое описание методов
__call() public
__call(string $method, array $args): mixed
Вызов методов экземпляра класса стратегии.
Параметры
-
string$method Имя метода.
-
array$args Аргументы метода.
Возвращает
mixed__construct() public
__construct(Cake\ORM\Table $table, array<string, mixed> $config = [])
Конструктор
Опции
-
fields: Список полей, которые необходимо перевести. Предоставление этого списка полей обязательно при использованииEavStrategy. Если список полей пуст при использованииShadowTableStrategy, то список будет автоматически сгенерирован на основе схемы shadow table. -
defaultLocale: Локаль, которая рассматривается как локаль по умолчанию поведением. Значения полей для локали по умолчанию будут храниться в основной таблице, а остальные - в таблице переводов. Если не указано явно, значениеI18n::getDefaultLocale()будет использовано для получения локали по умолчанию. Если вы не хотите использовать локаль по умолчанию и хотите, чтобы переведенные поля для всех локалей хранились в таблице переводов, то установите этот параметр в пустую строку''. -
allowEmptyTranslations: По умолчанию, если запись была переведена и сохранена как пустая строка, поведение перевода возьмет и использует это значение для перезаписи исходного значения поля. Если вы не хотите этого поведения, то установите этот параметр вfalse. -
validator: Валидатор, который должен использоваться при создании/изменении записей перевода. По умолчаниюnull.
Параметры
-
Cake\ORM\Table$table Таблица, к которой подключено это поведение.
-
array<string, mixed>$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(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает ключ конфигурации.
Параметры
-
array<string, mixed>|string$key Ключ для записи.
-
mixed$value Значение для записи.
-
string|bool$merge optional True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionесли пытаетесь перезаписать существующую конфигурацию
_reflectionCache() protected
_reflectionCache(): array
Получает методы, реализованные этим поведением
Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _, будут игнорироваться, как и методы, объявленные в Cake\ORM\Behavior
Возвращает
arrayИсключения
ReflectionException_resolveMethodAliases() protected
_resolveMethodAliases(string $key, array<string, mixed> $defaults, array<string, mixed> $config): array
Удаляет методы с псевдонимами, которые в противном случае были бы продублированы конфигурацией пользователя.
Параметры
-
string$key Ключ для фильтрации.
-
array<string, mixed>$defaults Карта сопоставления методов по умолчанию.
-
array<string, mixed>$config Настраиваемые сопоставления методов.
Возвращает
arraybuildMarshalMap() public
buildMarshalMap(Cake\ORM\Marshaller $marshaller, array $map, array<string, mixed> $options): array
Создает набор свойств, которые должны быть включены в процесс маршалинга.
Добавляет обработчики маршалинга _translations. Вы можете отключить маршалинг переводов, установив 'translations' => false в параметрах, предоставленных Table::newEntity() или Table::patchEntity().
Параметры
-
Cake\ORM\Marshaller$marshaller Маршалер таблицы, к которой подключено поведение.
-
array$map Создаваемая карта свойств.
-
array<string, mixed>$options Массив параметров, используемых в вызове маршалинга.
Возвращает
arrayconfigShallow() 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']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
Возвращает
$thiscreateStrategy() protected
createStrategy(): Cake\ORM\Behavior\Translate\TranslateStrategyInterface
Создает экземпляр стратегии.
Возвращает
Cake\ORM\Behavior\Translate\TranslateStrategyInterfacefindTranslations() public
findTranslations(Cake\ORM\Query $query, array<string, mixed> $options): Cake\ORM\Query
Пользовательский метод поиска, используемый для получения всех переводов для найденных записей. Полученные переводы могут быть отфильтрованы по локали путем передачи ключа locales в массиве параметров.
Переведенные значения будут найдены для каждой сущности под свойством _translations, содержащим массив с индексами по имени локали.
Пример:
$article = $articles->find('translations', ['locales' => ['eng', 'deu'])->first();
$englishTranslatedFields = $article->get('_translations')['eng']; Если массив locales не передан, он вернет все найденные переводы для каждой записи.
Параметры
-
Cake\ORM\Query$query Исходный запрос для модификации
-
array<string, mixed>$options Параметры
Возвращает
Cake\ORM\QuerygetConfig() 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Исключения
InvalidArgumentExceptiongetDefaultStrategyClass() public static
getDefaultStrategyClass(): string
Получить имя класса стратегии по умолчанию.
Возвращает
stringgetLocale() public
getLocale(): string
Возвращает текущую локаль.
Если локаль не была явно установлена через setLocale(), этот метод вернет текущую глобально настроенную локаль.
Возвращает
stringСм. также
\Cake\ORM\Behavior\TranslateBehavior::setLocale()
getStrategy() public
getStrategy(): Cake\ORM\Behavior\Translate\TranslateStrategyInterface
Получить экземпляр класса стратегии.
Возвращает
Cake\ORM\Behavior\Translate\TranslateStrategyInterfacegetTable() public
getTable(): Cake\ORM\Table
Получить экземпляр таблицы, к которому привязано это поведение.
Возвращает
Cake\ORM\TableimplementedEvents() public
implementedEvents(): array<string, mixed>
Получает обратные вызовы модели, к которым это поведение проявляет интерес.
Определение одного из методов обратного вызова предполагает, что поведение проявляет интерес к соответствующему событию.
Переопределите этот метод, если необходимо добавить обработчики событий, не относящихся к стандартным. Или если вы хотите, чтобы ваше поведение прослушивало нестандартные события.
Возвращает
array<string, mixed>implementedFinders() public
implementedFinders(): array
implementedFinders
Предоставляет карту alias->имя_метода реализованных методов поиска. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном выше примере вызов $table->find('this') вызовет $behavior->findThis(), а вызов $table->find('alias') вызовет $behavior->findMethodName()
Рекомендуется, хотя и необязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. См. примеры в базовых поведении.
Возвращает
arrayИсключения
ReflectionExceptionimplementedMethods() public
implementedMethods(): array
implementedMethods
Предоставляет карту alias->имя_метода реализованных методов. Пример:
[ 'method' => 'method', 'aliasedMethod' => 'somethingElse' ]
В приведенном выше примере вызов $table->method() вызовет $behavior->method(), а вызов $table->aliasedMethod() вызовет $behavior->somethingElse()
Рекомендуется, хотя и необязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. См. примеры в базовых поведении.
Возвращает
arrayИсключения
ReflectionExceptioninitialize() public
initialize(array<string, mixed> $config): void
Обработка инициализации
Реализуйте этот метод, чтобы избежать необходимости переопределять конструктор и вызывать родителя.
Параметры
-
array<string, mixed>$config Настройка для данного поведения.
Возвращает
voidreferenceName() protected
referenceName(Cake\ORM\Table $table): string
Определение имени ссылки для заданной таблицы
Имя ссылки обычно определяется по имени класса объекта таблицы (PostsTable -> Posts), однако для экземпляров autotable оно определяется по имени таблицы в базе данных, к которой обращается объект - или в крайнем случае, по алиасу экземпляра autotable.
Параметры
-
Cake\ORM\Table$table Класс таблицы, для которого нужно получить имя ссылки.
Возвращает
stringsetConfig() 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При попытке установить недопустимый ключ.
setDefaultStrategyClass() public static
setDefaultStrategyClass(string $class): void
Установить имя класса стратегии по умолчанию.
Параметры
-
string$class Имя класса.
Возвращает
voidsetLocale() public
setLocale(string|null $locale): $this
Устанавливает локаль, которая должна использоваться для всех будущих операций поиска и сохранения в таблице, к которой прикреплено это поведение.
При извлечении записей поведение будет включать содержимое для установленной с помощью этого метода локали, и аналогично при сохранении данных, оно сохранит данные в этой локали.
Обратите внимание, что в случае, если у сущности установлено свойство _locale, эта локаль будет иметь преимущество перед локаллю, установленной с помощью этого метода (и перед глобально настроенной для нее же).
Параметры
-
string|null$locale Локаль для извлечения и сохранения записей. Передайте
nullдля отмены текущей локали и для возврата поведения к использованию глобально настроенной локали.
Возвращает
$thisСм. также
Ссылки
https://book.cakephp.org/4/en/orm/behaviors/translate.html#saving-in-another-language
setStrategy() public
setStrategy(Cake\ORM\Behavior\Translate\TranslateStrategyInterface $strategy): $this
Установить экземпляр класса стратегии.
Параметры
-
Cake\ORM\Behavior\Translate\TranslateStrategyInterface$strategy Экземпляр класса стратегии.
Возвращает
$thistable() public
table(): Cake\ORM\Table
Получить экземпляр таблицы, к которому привязано это поведение.
Возвращает
Cake\ORM\TabletranslationField() public
translationField(string $field): string
Возвращает полностью алиасированное имя поля для переведенных полей.
Если запрашиваемое поле настроено как поле перевода, возвращается поле content с алиасом соответствующей ассоциации. Для всех остальных полей возвращается имя поля с алиасом таблицы.
Параметры
-
string$field Имя поля, которое нужно алиасить.
Возвращает
stringverifyConfig() public
verifyConfig(): void
verifyConfig
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемый метод.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionесли конфигурация недействительна
Подробное описание свойств
$_config protected
Конфигурация выполнения
Тип
array<string, mixed>$_configInitialized protected
Настройка конфигурации уже была сконфигурирована по умолчанию
Тип
bool$_defaultConfig protected
Настройка по умолчанию
Эти настройки объединяются с предоставленными пользователем настройками при использовании поведения.
Тип
array<string, mixed>$_reflectionCache protected static
Кэширование отражения методов для поведения.
Хранит отраженный метод + методы поиска по классу. Это предотвращает отражение одного и того же класса несколько раз в одном процессе.
Тип
array<string, array>$_table protected
Экземпляр таблицы.
Тип
Cake\ORM\Table$defaultStrategyClass protected static
Имя класса стратегии по умолчанию.
Тип
string$strategy protected
Экземпляр стратегии перевода.
Тип
Cake\ORM\Behavior\Translate\TranslateStrategyInterface|null
© 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.4/class-Cake.ORM.Behavior.TranslateBehavior.html