类 EntityContext
为单个实体及其关系提供一个表单上下文。它也可以用作围绕实体数组或迭代器的上下文。
此类允许 FormHelper 与实体或实体集合交互。
重要键
entity
此上下文正在操作的实体。table
要从中获取模式/验证器的 ORM\Table 实例,跨越多个实体的表实例数组,或表的名称。如果为 null,则将使用命名约定确定表名称。validator
要使用的 Validation\Validator,或要在表对象上调用的验证方法的名称。例如 'default'。默认为 'default'。在处理关联表单时可以是表别名=>验证器数组。
常量
-
list<string>
VALID_ATTRIBUTES ¶['length', 'precision', 'comment', 'null', 'default']
属性摘要
-
$_context protected
array<string, mixed>
此对象的上下文数据。
-
$_isCollection protected
bool
用于跟踪实体是否为集合的布尔值。
-
$_rootName protected
string
顶级实体/表对象的名称。
-
$_tableLocator protected
Cake\ORM\Locator\LocatorInterface|null
表定位器实例
-
$_tables protected
arrayCake\ORM\Table>
一个表字典
-
$_validator protected
arrayCake\Validation\Validator>
验证器字典。
-
$defaultTable protected
string|null
此对象的默认表别名。
方法摘要
-
__construct() public
构造函数。
-
_extractMultiple() protected
用于从数组中提取所有主键值的辅助方法,主键列是从提供的 $path 数组中推断出来的
-
_getProp() protected
读取属性值或遍历数组/迭代器。
-
_getTable() protected
从属性路径获取表实例
-
_getValidator() protected
根据命名约定获取与实体关联的验证器。
-
_prepare() protected
从上下文中准备一些其他数据。
-
_schemaDefault() protected
从给定实体字段的表模式获取默认值。
-
attributes() public
获取字段名称的其他属性的关联数组。
-
entity() public
为给定路径获取实体或数据值
-
error() public
获取给定字段的错误
-
fetchTable() public
获取表实例的便捷方法。
-
fieldNames() public
从顶级实体获取字段名称。
-
getMaxLength() public
从验证获取字段长度
-
getPrimaryKey() public
获取上下文的主键数据。
-
getRequiredMessage() public
获取字段的默认“必填”错误消息
-
getTableLocator() public
获取表定位器。
-
hasError() public
检查字段是否附加了错误
-
isCreate() public
检查此表单是创建还是更新。
-
isPrimaryKey() public
如果传递的字段名称是此上下文的主键的一部分,则返回 true
-
isRequired() public
检查字段是否应标记为必填。
-
leafEntity() protected
获取给定路径的终端或叶实体。
-
setTableLocator() public
设置表定位器。
-
type() public
获取给定字段名称的抽象字段类型。
-
val() public
获取给定路径的值。
方法详细
__construct() ¶ public
__construct(array<string, mixed> $context)
构造函数。
参数
-
array<string, mixed>
$context 上下文信息。
_extractMultiple() ¶ protected
_extractMultiple(mixed $values, list<string> $path): array|null
用于从数组中提取所有主键值的辅助方法,主键列是从提供的 $path 数组中推断出来的
参数
-
mixed
$values 要从中提取主键的列表
-
list<string>
$path 字段名称路径中的每个部分
返回值
array|null
_getProp() ¶ protected
_getProp(mixed $target, string $field): mixed
读取属性值或遍历数组/迭代器。
参数
-
mixed
$target 要从中获取 $field 的实体/数组/集合。
-
string
$field 要获取的下一个字段。
返回值
mixed
_getTable() ¶ protected
_getTable(Cake\Datasource\EntityInterface|list<string>|string $parts, bool $fallback = true): Cake\ORM\Table|null
从属性路径获取表实例
参数
-
Cake\Datasource\EntityInterface|list<string>|string
$parts 字段名称路径中的每个部分
-
bool
$fallback optional 当遇到不存在的字段/属性时,是否回退到最后一个找到的表。
返回值
Cake\ORM\Table|null
_getValidator() ¶ protected
_getValidator(array $parts): Cake\Validation\Validator
根据命名约定获取与实体关联的验证器。
参数
-
array
$parts 字段名称路径中的每个部分
返回值
Cake\Validation\Validator
抛出
Cake\Core\Exception\CakeException
如果无法根据部分检索验证器。
_prepare() ¶ protected
_prepare(): void
从上下文中准备一些其他数据。
如果构造函数提供了表选项并且它是字符串,则 TableLocator 将用于获取正确的表实例。
如果提供对象作为表选项,则将按原样使用它。
如果未提供表格选项,将根据命名约定推断表格名称。 此推断将适用于许多常见的对象,例如数组、集合对象和结果集。
返回值
void
抛出
Cake\Core\Exception\CakeException
当无法定位/推断表格对象时。
_schemaDefault() ¶ protected
_schemaDefault(list<string> $parts): mixed
从给定实体字段的表模式获取默认值。
参数
-
list<string>
$parts 字段名称路径中的每个部分
返回值
mixed
attributes() ¶ public
attributes(string $field): array
获取字段名称的其他属性的关联数组。
参数
-
string
$field 用于获取额外数据的点分隔路径。
返回值
array
entity() ¶ public
entity(list<string>|null $path = null): Cake\Datasource\EntityInterface|iterable|null
为给定路径获取实体或数据值
此方法将遍历给定的路径并找到给定路径的实体或数组值。
如果您只需要路径的终端实体,请使用 leafEntity
代替。
参数
-
list<string>|null
$path optional 字段名称路径中的各个部分,或者为 null 以获取构造函数上下文中传递的实体。
返回值
Cake\Datasource\EntityInterface|iterable|null
抛出
Cake\Core\Exception\CakeException
当无法读取属性时。
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`。
参见
fieldNames() ¶ public
fieldNames(): list<string>
从顶级实体获取字段名称。
如果上下文是针对实体数组,则将使用第 0 个索引。
返回值
list<string>
getMaxLength() ¶ public
getMaxLength(string $field): int|null
从验证获取字段长度
参数
-
string
$field 要检查的字段的点分隔路径。
返回值
int|null
getPrimaryKey() ¶ public
getPrimaryKey(): list<string>
获取上下文的主键数据。
从根实体的模式中获取主键列。
返回值
list<string>
getRequiredMessage() ¶ public
getRequiredMessage(string $field): string|null
获取字段的默认“必填”错误消息
参数
-
string
$field
返回值
string|null
getTableLocator() ¶ public
getTableLocator(): Cake\ORM\Locator\LocatorInterface
获取表定位器。
返回值
Cake\ORM\Locator\LocatorInterface
hasError() ¶ public
hasError(string $field): bool
检查字段是否附加了错误
参数
-
string
$field 用于检查错误的点分隔路径。
返回值
bool
isCreate() ¶ public
isCreate(): bool
检查此表单是创建还是更新。
如果上下文是针对单个实体,则将使用实体的 isNew() 方法。 如果 isNew() 返回 null,则将假定为创建操作。
如果上下文是针对集合或数组,则将使用集合中的第一个对象。
返回值
bool
isPrimaryKey() ¶ public
isPrimaryKey(string $field): bool
如果传递的字段名称是此上下文的主键的一部分,则返回 true
参数
-
string
$field
返回值
bool
isRequired() ¶ public
isRequired(string $field): bool|null
检查字段是否应标记为必填。
在此上下文类中,这由“required”数组简单定义。
参数
-
string
$field 要检查的字段的点分隔路径。
返回值
bool|null
leafEntity() ¶ protected
leafEntity(array|null $path = null): array
获取给定路径的终端或叶实体。
遍历路径,直到找不到实体。 如果第一个元素包含实体,则将遍历包含实体的列表。 否则,将假定包含实体为终端实体。
参数
-
array|null
$path optional 字段名称路径中的各个部分,或者为 null 以获取构造函数上下文中传递的实体。
返回值
array
抛出
Cake\Core\Exception\CakeException
当无法读取属性时。
setTableLocator() ¶ public
setTableLocator(Cake\ORM\Locator\LocatorInterface $tableLocator): $this
设置表定位器。
参数
-
Cake\ORM\Locator\LocatorInterface
$tableLocator LocatorInterface 实例。
返回值
$this
type() ¶ public
type(string $field): string|null
获取给定字段名称的抽象字段类型。
参数
-
string
$field 用于获取模式类型的点分隔路径。
返回值
string|null
参见
val() ¶ public
val(string $field, array<string, mixed> $options = []): mixed
获取给定路径的值。
遍历实体数据并找到 $path 的值。
参数
-
string
$field 值的点分隔路径。
-
array<string, mixed>
$options optional 选项
返回值
mixed