CakePHP
  • 文档
    • 书籍
    • API
    • 视频
    • 报告安全问题
    • 隐私政策
    • 标识 & 商标
  • 商业解决方案
  • 周边产品
  • 公路旅行
  • 团队
  • 社区
    • 社区
    • 参与进来
    • 问题 (Github)
    • 烘焙坊
    • 精选资源
    • 培训
    • 聚会
    • 我的 CakePHP
    • CakeFest
    • 时事通讯
    • Linkedin
    • 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
    • 缓存
    • 集合
    • 命令
    • 控制台
    • 控制器
    • 核心
    • 数据库
    • 数据源
    • 错误
    • 事件
    • 表单
    • HTTP
    • 国际化
    • 日志
    • 邮件
    • 网络
    • ORM
      • 关联
      • 行为
        • 翻译
      • 异常
      • 定位器
      • 查询
      • 规则
    • 路由
    • 测试套件
    • 实用工具
    • 验证
    • 视图

类 ShadowTableStrategy

此类提供了一种通过在单独的影子表中保存翻译来翻译动态数据的方法,其中每一行对应于主表的一行。

命名空间: Cake\ORM\Behavior\Translate

属性摘要

  • $_config protected
    array<string, mixed>

    运行时配置

  • $_configInitialized protected
    bool

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

  • $_defaultConfig protected
    array<string, mixed>

    默认配置

  • $_tableLocator protected
    Cake\ORM\Locator\LocatorInterface|null

    表定位器实例

  • $defaultTable protected
    string|null

    此对象的默认表别名。

  • $locale protected
    string|null

    将用于从翻译表覆盖绑定表中字段的语言环境名称

  • $table protected
    Cake\ORM\Table

    表实例

  • $translationTable protected
    Cake\ORM\Table

    负责翻译的 Table 实例

方法摘要

  • __construct() public

    构造函数

  • _configDelete() protected

    删除单个配置键。

  • _configRead() protected

    读取配置键。

  • _configWrite() protected

    写入配置键。

  • addFieldsToQuery() protected

    将翻译字段添加到查询。

  • afterSave() public

    在实体保存后取消设置临时 _i18n 属性

  • beforeFind() public

    回调方法,监听绑定表中的 beforeFind 事件。它通过急切加载翻译的字段并将格式化程序添加到查询中来修改传入的查询,以将值复制到主表记录中。

  • beforeSave() public

    在实体保存之前修改它,以便将翻译的字段也持久化到数据库中。

  • buildMarshalMap() public

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

  • bundleTranslatedFields() protected

    辅助方法,用于从传入实体的 _translations 属性中找到的数据生成多个翻译字段实体。结果将被放入其 _i18n 属性中。

  • configShallow() public

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

  • fetchTable() public

    获取表实例的便捷方法。

  • 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<string, mixed> $config = [])

构造函数

参数
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
如果尝试覆盖现有配置

addFieldsToQuery() ¶ protected

addFieldsToQuery(Cake\ORM\Query\SelectQuery $query, array<string, mixed> $config): bool

将翻译字段添加到查询。

如果查询使用 autofields(直接或隐式),则首先将主表的字段添加到查询中。

仅为主表中的字段添加翻译,但始终添加语言环境字段。

参数
Cake\ORM\Query\SelectQuery $query

要检查的查询。

array<string, mixed> $config

用于添加字段的配置。

返回
bool

afterSave() ¶ public

afterSave(Cake\Event\EventInterfaceCake\ORM\Table> $event, Cake\Datasource\EntityInterface $entity): void

在实体保存后取消设置临时 _i18n 属性

参数
Cake\Event\EventInterfaceCake\ORM\Table> $event

触发的 beforeSave 事件

Cake\Datasource\EntityInterface $entity

将要保存的实体

返回
void

beforeFind() ¶ public

beforeFind(Cake\Event\EventInterfaceCake\ORM\Table> $event, Cake\ORM\Query\SelectQuery $query, ArrayObject<string, mixed> $options): void

回调方法,监听绑定表中的 beforeFind 事件。它通过急切加载翻译的字段并将格式化程序添加到查询中来修改传入的查询,以将值复制到主表记录中。

参数
Cake\Event\EventInterfaceCake\ORM\Table> $event

触发的 beforeFind 事件。

Cake\ORM\Query\SelectQuery $query

查询。

ArrayObject<string, mixed> $options

查询的选项。

返回
void

beforeSave() ¶ public

beforeSave(Cake\Event\EventInterfaceCake\ORM\Table> $event, Cake\Datasource\EntityInterface $entity, ArrayObject<string, mixed> $options): void

在实体保存之前修改它,以便将翻译的字段也持久化到数据库中。

参数
Cake\Event\EventInterfaceCake\ORM\Table> $event

触发的 beforeSave 事件。

Cake\Datasource\EntityInterface $entity

将要保存的实体。

ArrayObject<string, mixed> $options

传递给 save 方法的选项。

返回
void

buildMarshalMap() ¶ public

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
返回
数组

bundleTranslatedFields() ¶ protected

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

辅助方法,用于从传入实体的 _translations 属性中找到的数据生成多个翻译字段实体。结果将被放入其 _i18n 属性中。

参数
Cake\Datasource\EntityInterface $entity

实体。

返回
void

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

要设置的值。

返回
$this

fetchTable() ¶ public

fetchTable(string|null $alias = null, array<string, mixed> $options = []): Cake\ORM\Table

获取表实例的便捷方法。

参数
string|null $alias optional

您要获取的别名。应使用驼峰式大小写格式。如果为 null,则使用 $defaultTable 属性的值。

array<string, mixed> $options optional

您要用于构建表的选项。如果表已加载,则注册表选项将被忽略。

返回
Cake\ORM\Table
抛出
Cake\Core\Exception\CakeException
如果 $alias 参数和 $defaultTable 属性均为 null。
另请参阅
\Cake\ORM\TableLocator::get()

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

返回当前语言环境。

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

返回
字符串
另请参阅
\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\Collection\CollectionInterface $results): Cake\Collection\CollectionInterface

修改表查找的结果,以便将完整的翻译记录合并到每个实体的 _translations 键下。

参数
Cake\Collection\CollectionInterface $results

要修改的结果。

返回
Cake\Collection\CollectionInterface

iterateClause() ¶ protected

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

迭代子句以对字段进行别名化。

此处的目标是通过在字段前添加适当的表别名来透明地防止不明确的字段错误。此方法目前仅期望接收 order 子句。

参数
Cake\ORM\Query\SelectQuery $query

要检查的查询。

string $name optional

子句名称。

array<string, mixed> $config optional

用于添加字段的配置。

返回
bool

mainFields() ¶ protected

mainFields(): list<string>

延迟定义并返回主表字段。

返回
list<string>

rowMapper() ¶ protected

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

修改表查找的结果,以便将翻译的字段合并到给定语言环境的每个实体中。

参数
Cake\Collection\CollectionInterface $results

要映射的结果。

string $locale

区域设置字符串

返回
Cake\Collection\CollectionInterface

setConfig() ¶ 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
尝试设置无效键时。

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<string, mixed> $options): void

为具有所需语言环境的记录创建一个 hasOne 关联。

参数
string $locale

区域设置

ArrayObject<string, mixed> $options

查找选项

返回
void

translatedFields() ¶ protected

translatedFields(): list<string>

延迟定义并返回翻译表字段。

返回
list<string>

translationField() ¶ public

translationField(string $field): string

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

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

参数
string $field

要加别名的字段名称。

返回
字符串

traverseClause() ¶ protected

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

遍历子句以对字段进行别名化。

此处的目标是通过在字段前添加适当的表别名来透明地防止不明确的字段错误。此方法目前仅期望接收 where 子句。

参数
Cake\ORM\Query\SelectQuery $query

要检查的查询。

string $name optional

子句名称。

array<string, mixed> $config optional

用于添加字段的配置。

返回
bool

unsetEmptyFields() ¶ protected

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

取消设置空的翻译以避免持久化。

仅当 $this->_config['allowEmptyTranslations'] 为 false 时才应调用。

参数
Cake\Datasource\EntityInterface $entity

要检查内部空翻译字段的实体。

返回
void

属性详情

$_config ¶ protected

运行时配置

类型
array<string, mixed>

$_configInitialized ¶ protected

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

类型
bool

$_defaultConfig ¶ protected

默认配置

这些与用户提供的配置合并。

类型
array<string, mixed>

$_tableLocator ¶ protected

表定位器实例

类型
Cake\ORM\Locator\LocatorInterface|null

$defaultTable ¶ protected

此对象的默认表别名。

类型
string|null

$locale ¶ protected

将用于从翻译表覆盖绑定表中字段的语言环境名称

类型
string|null

$table ¶ protected

表实例

类型
Cake\ORM\Table

$translationTable ¶ protected

负责翻译的 Table 实例

类型
Cake\ORM\Table
OpenHub
Pingping
Linode
  • 商业解决方案
  • 展示
  • 文档
  • 书籍
  • API
  • 视频
  • 报告安全问题
  • 隐私政策
  • 标识 & 商标
  • 社区
  • 参与进来
  • 问题 (Github)
  • 烘焙坊
  • 精选资源
  • 培训
  • 聚会
  • 我的 CakePHP
  • CakeFest
  • 时事通讯
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • 帮助 & 支持
  • 论坛
  • Stack Overflow
  • IRC
  • Slack
  • 付费支持

使用 CakePHP API 文档 生成