CakePHP
  • 文档
    • 手册
    • API
    • 视频
    • 报告安全问题
    • 隐私政策
    • 标识和商标
  • 商业解决方案
  • 周边产品
  • 公路旅行
  • 团队
  • 社区
    • 社区
    • 参与进来
    • 问题 (Github)
    • Bakery
    • 精选资源
    • 培训
    • 聚会
    • 我的 CakePHP
    • CakeFest
    • 新闻稿
    • 领英
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • 帮助和支持
    • 论坛
    • Stack Overflow
    • IRC
    • Slack
    • 付费支持
CakePHP

C CakePHP 5.1 Chiffon API

  • 项目
    • CakePHP
      • CakePHP
      • Chronos
      • Elastic Search
      • 队列
  • 版本
    • 5.1
      • 5.1
      • 5.0
      • 4.5
      • 4.4
      • 4.3
      • 4.2
      • 4.1
      • 4.0
      • 3.10
      • 3.9
      • 3.8
      • 3.7
      • 3.6
      • 3.5
      • 3.4
      • 3.3
      • 3.2
      • 3.1
      • 3.0
      • 2.10
      • 2.9
      • 2.8
      • 2.7
      • 2.6
      • 2.5
      • 2.4
      • 2.3
      • 2.2
      • 2.1
      • 2.0
      • 1.3
      • 1.2

命名空间

  • 全局
  • Cake
    • Cache
    • Collection
    • Command
    • Console
    • Controller
    • Core
    • Database
    • Datasource
    • Error
    • Event
    • Form
    • Http
    • I18n
    • Log
    • Mailer
    • Network
    • ORM
      • Association
      • Behavior
        • Translate
      • Exception
      • Locator
      • Query
      • Rule
    • Routing
    • TestSuite
    • Utility
    • Validation
    • View

类 TranslateBehavior

此行为提供了一种通过在单独的表格中保留翻译并将其链接到另一个表格中的原始记录来翻译动态数据的方法。翻译后的字段可以被配置为在获取时覆盖主表格中的字段,或者为同一实体放在另一个属性中。

如果你希望覆盖字段,你需要调用此行为中的locale方法来设置你想要从翻译表格中获取的语言。

如果你想为每个获取的记录获取所有语言或某些语言,你可以使用公开给表格的自定义translations查找器。

命名空间: Cake\ORM\Behavior

属性摘要

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

    删除别名方法,否则这些方法会因用户端配置而重复。

  • beforeMarshal() public

    将默认区域设置下的字段提升到_translations键下的数据根目录。

  • buildMarshalMap() public

    构建一组应该包含在编组过程中的属性。

  • configShallow() public

    将提供的配置与现有配置合并。与config()对嵌套键进行递归合并不同,此方法执行简单合并。

  • createStrategy() protected

    创建策略实例。

  • findTranslations() public

    用于检索找到的记录的所有翻译的自定义查找器方法。通过在选项数组中传递locales键可以按区域设置过滤获取的翻译。

  • getConfig() public

    返回配置。

  • getConfigOrFail() public

    返回此特定键的配置。

  • getDefaultStrategyClass() public static

    获取默认策略类名称。

  • getLocale() public

    返回当前区域设置。

  • getStrategy() public

    获取策略类实例。

  • 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时字段列表为空,则该列表将根据阴影表格架构自动生成。
  • 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() ¶ 受保护的

_configRead(string|null $key): mixed

读取配置键。

参数
string|null $key

要读取的键。

返回
mixed

_configWrite() ¶ 受保护的

_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void

写入配置键。

参数
array<string, mixed>|string $key

要写入的键。

mixed $value

要写入的值。

string|bool $merge 可选的

True 表示递归合并,“浅层” 表示简单合并,False 表示覆盖,默认为 False。

返回
void
抛出
Cake\Core\Exception\CakeException
如果尝试覆盖现有配置

_reflectionCache() ¶ 受保护的

_reflectionCache(): array

获取此行为实现的方法

使用 implementedEvents() 方法排除回调方法。以 _ 开头的 方法将被忽略,在 Cake\ORM\Behavior 上声明的方法也会被忽略。

返回
数组
抛出
ReflectionException

_resolveMethodAliases() ¶ 受保护的

_resolveMethodAliases(string $key, array<string, mixed> $defaults, array<string, mixed> $config): array

删除别名方法,否则这些方法会因用户端配置而重复。

参数
string $key

要过滤的键。

array<string, mixed> $defaults

默认方法映射。

array<string, mixed> $config

自定义方法映射。

返回
数组

beforeMarshal() ¶ 公共的

beforeMarshal(Cake\Event\EventInterface $event, ArrayObject $data, ArrayObject $options): void

将默认区域设置下的字段提升到_translations键下的数据根目录。

这允许即使在表单中也使用 _translations.{locale}.field_name 类型命名,即使对于默认区域设置也是如此。

参数
Cake\Event\EventInterface $event
ArrayObject $data
ArrayObject $options
返回
void

buildMarshalMap() ¶ 公共的

buildMarshalMap(Cake\ORM\Marshaller $marshaller, array $map, array<string, mixed> $options): array

构建一组应该包含在编组过程中的属性。

添加 _translations 编组处理程序。您可以通过在提供给 Table::newEntity() 或 Table::patchEntity() 的选项中设置 'translations' => false 来禁用翻译的编组。

参数
Cake\ORM\Marshaller $marshaller

行为附加到的表的编组程序。

array $map

正在构建的属性映射。

array<string, mixed> $options

编组调用中使用的选项数组。

返回
数组

configShallow() ¶ 公共的

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 可选的

要设置的值。

返回
$this

createStrategy() ¶ 受保护的

createStrategy(): Cake\ORM\Behavior\Translate\TranslateStrategyInterface

创建策略实例。

返回
Cake\ORM\Behavior\Translate\TranslateStrategyInterface

findTranslations() ¶ 公共的

findTranslations(Cake\ORM\Query\SelectQuery $query, list<string> $locales = []): Cake\ORM\Query\SelectQuery

用于检索找到的记录的所有翻译的自定义查找器方法。通过在选项数组中传递locales键可以按区域设置过滤获取的翻译。

每个实体在 _translations 属性下都会找到翻译后的值,该属性包含一个以区域设置名称为索引的数组。

示例

$article = $articles->find('translations', locales: ['eng', 'deu'])->first();
$englishTranslatedFields = $article->get('_translations')['eng'];

如果没有传递 locales 数组,它将为每条记录带来所有找到的翻译。

参数
Cake\ORM\Query\SelectQuery $query

要修改的原始查询

list<string> $locales 可选的

区域设置列表或包含 locales 键定义的选项

返回
Cake\ORM\Query\SelectQuery

getConfig() ¶ 公共的

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 可选的

键不存在时的返回值。

返回
mixed

getConfigOrFail() ¶ 公共的

getConfigOrFail(string $key): mixed

返回此特定键的配置。

此键的配置值必须存在,永远不能为 null。

参数
string $key

要获取的键。

返回
mixed
抛出
InvalidArgumentException

getDefaultStrategyClass() ¶ 公共的 静态的

getDefaultStrategyClass(): string

获取默认策略类名称。

返回
string

getLocale() ¶ 公共的

getLocale(): string

返回当前区域设置。

如果没有通过 setLocale() 显式设置区域设置,此方法将返回当前配置的全局区域设置。

返回
string
另请参阅
\Cake\I18n\I18n::getLocale()
\Cake\ORM\Behavior\TranslateBehavior::setLocale()

getStrategy() ¶ 公共的

getStrategy(): Cake\ORM\Behavior\Translate\TranslateStrategyInterface

获取策略类实例。

返回
Cake\ORM\Behavior\Translate\TranslateStrategyInterface

implementedEvents() ¶ 公共的

implementedEvents(): array<string, mixed>

获取此行为感兴趣的模型回调。

通过定义回调方法之一,行为被认为对相关事件感兴趣。

如果您需要添加非传统事件监听器,或者希望您的行为监听非标准事件,请覆盖此方法。

返回
array<string, mixed>

implementedFinders() ¶ 公共的

implementedFinders(): array

implementedFinders

提供行为实现的查找器的别名->方法名映射。例如

 [
   'this' => 'findThis',
   'alias' => 'findMethodName'
 ]

使用上面的示例,调用 $table->find('this') 将调用 $behavior->findThis() ,而调用 $table->find('alias') 将调用 $behavior->findMethodName()

建议(尽管不是必需的)在子类的配置属性中定义 implementedFinders,这样就不必使用反射来推导出可用的方法列表。查看核心行为以获取示例。

返回
数组
抛出
ReflectionException

implementedMethods() ¶ 公共的

implementedMethods(): array

implementedMethods

提供行为实现的方法的别名->方法名映射。例如

 [
   'method' => 'method',
   'aliasedMethod' => 'somethingElse'
 ]

使用上面的示例,调用 $table->method() 将调用 $behavior->method() ,而调用 $table->aliasedMethod() 将调用 $behavior->somethingElse()

建议(尽管不是必需的)在子类的配置属性中定义 implementedFinders,这样就不必使用反射来推导出可用的方法列表。查看核心行为以获取示例。

返回
数组
抛出
ReflectionException

initialize() ¶ 公共的

initialize(array<string, mixed> $config): void

初始化钩子

实现此方法以避免覆盖构造函数并调用父类。

参数
array<string, mixed> $config

此行为的配置。

返回
void

referenceName() ¶ 受保护的

referenceName(Cake\ORM\Table $table): string

确定要为给定表格使用的引用名称

引用名称通常从表对象的类名派生(PostsTable -> Posts),但是对于自动表实例,它从对象指向的数据库表派生,或者作为最后的手段,从自动表实例的别名派生。

参数
Cake\ORM\Table $table

要获取引用名称的表类。

返回
string

setConfig() ¶ 公共的

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 可选的

要设置的值。

bool $merge 可选的

是否递归合并或覆盖现有配置,默认为 True。

返回
$this
抛出
Cake\Core\Exception\CakeException
当尝试设置无效的键时。

setDefaultStrategyClass() ¶ 公共的 静态的

setDefaultStrategyClass(string $class): void

设置默认策略类名称。

参数
string $class

类名。

返回
void

setLocale() ¶ 公共的

setLocale(string|null $locale): $this

设置附加此行为的表格的所有未来查找和保存操作应使用的区域设置。

获取记录时,行为将包含通过此方法设置的区域设置的内容,同样,保存数据时,它将以该区域设置保存数据。

请注意,如果实体具有设置的 _locale 属性,则该区域设置将优先于通过此方法设置的区域设置(以及全局配置的区域设置)!

参数
string|null $locale

用于获取和保存记录的区域设置。传递 null 以取消设置当前区域设置,并使行为回退到使用全局配置的区域设置。

返回
$this
另请参阅
\Cake\ORM\Behavior\TranslateBehavior::getLocale()
链接
https://book.cakephp.com.cn/5/en/orm/behaviors/translate.html#retrieving-one-language-without-using-i18n-locale

https://book.cakephp.com.cn/5/en/orm/behaviors/translate.html#saving-in-another-language

setStrategy() ¶ 公共的

setStrategy(Cake\ORM\Behavior\Translate\TranslateStrategyInterface $strategy): $this

设置策略类实例。

参数
Cake\ORM\Behavior\Translate\TranslateStrategyInterface $strategy

策略类实例。

返回
$this

table() ¶ 公共的

table(): Cake\ORM\Table

获取此行为绑定的表格实例。

返回
Cake\ORM\Table

translationField() ¶ 公共的

translationField(string $field): string

返回翻译字段的完全别名字段名称。

如果请求的字段被配置为翻译字段,则返回具有相应关联别名的 content 字段。对于所有其他字段,返回表别名字段名。

参数
string $field

要添加别名的字段名。

返回
string

verifyConfig() ¶ 公共的

verifyConfig(): void

verifyConfig

检查实现的键是否包含指向可调用函数的值。

返回
void
抛出
Cake\Core\Exception\CakeException
如果配置无效

属性详细信息

$_config ¶ 受保护的

运行时配置

类型
array<string, mixed>

$_configInitialized ¶ 受保护的

配置属性是否已经使用默认值配置

类型
bool

$_defaultConfig ¶ 受保护的

默认配置

这些配置会在行为使用时与用户提供的配置合并。

类型
array<string, mixed>

$_reflectionCache ¶ 受保护的 静态的

行为的反射方法缓存。

存储每个类的反射方法和查找方法。这可以避免在同一个进程中多次反射同一个类。

类型
array<string, array>

$_table ¶ 受保护的

表格实例。

类型
Cake\ORM\Table

$defaultStrategyClass ¶ 受保护的 静态的

默认策略类名称。

类型
string

$strategy ¶ 受保护的

翻译策略实例。

类型
Cake\ORM\Behavior\Translate\TranslateStrategyInterface|null
OpenHub
Pingping
Linode
  • 商业解决方案
  • 展示
  • 文档
  • 手册
  • API
  • 视频
  • 报告安全问题
  • 隐私政策
  • 标识和商标
  • 社区
  • 参与进来
  • 问题 (Github)
  • Bakery
  • 精选资源
  • 培训
  • 聚会
  • 我的 CakePHP
  • CakeFest
  • 新闻稿
  • 领英
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • 帮助和支持
  • 论坛
  • Stack Overflow
  • IRC
  • Slack
  • 付费支持

使用 CakePHP API Docs 生成