类 RulesChecker
ORM 风格的规则检查器。
为 RulesChecker 类添加了与 ORM 相关的功能。
常量
属性概述
-
$_createRules protected
arrayCake\Datasource\RuleInvoker>
创建操作期间要检查的规则列表
-
$_deleteRules protected
arrayCake\Datasource\RuleInvoker>
删除操作期间要检查的规则列表
-
$_options protected
数组
传递给每个可调用规则的选项列表
-
$_rules protected
arrayCake\Datasource\RuleInvoker>
要在创建和更新操作中检查的规则列表
-
$_updateRules protected
arrayCake\Datasource\RuleInvoker>
更新操作期间要检查的规则列表
-
$_useI18n protected
布尔值
是否使用 I18n 函数翻译默认错误消息
方法概述
-
__construct() public
构造函数。接收要传递给所有规则的选项。
-
_addError() protected
用于装饰任何可调用函数的实用程序方法,以便如果它返回 false,实体中的正确属性将被标记为无效。
-
_addLinkConstraintRule() protected
添加链接约束规则。
-
_checkRules() protected
由顶级函数 checkDelete、checkCreate 和 checkUpdate 使用,此函数迭代包含要检查规则的数组,并检查所有规则。
-
add() public
添加一个规则,该规则将在创建和更新操作中应用于实体。
-
addCreate() public
添加一个规则,该规则将在创建操作中应用于实体。
-
addDelete() public
添加一个规则,该规则将在删除操作中应用于实体。
-
addUpdate() public
添加一个规则,该规则将在更新操作中应用于实体。
-
check() public
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。要应用的规则取决于 $mode 参数,该参数只能是 RulesChecker::CREATE、RulesChecker::UPDATE 或 RulesChecker::DELETE
-
checkCreate() public
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选定的规则将仅是那些指定在 'create' 上运行的规则。
-
checkDelete() public
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选定的规则将仅是那些指定在 'delete' 上运行的规则。
-
checkName() protected
检查规则是否已存在。
-
checkUpdate() public
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选定的规则将仅是那些指定在 'update' 上运行的规则。
-
existsIn() public
返回一个可调用函数,该函数可用作规则来检查从实体中提取的值是否作为主键存在于另一个表中。
-
isLinkedTo() public
验证是否存在指向给定关联的链接。
-
isNotLinkedTo() public
验证是否存在指向给定关联的链接。
-
isUnique() public
返回一个可调用函数,该函数可用作规则来检查表中值的唯一性。
-
remove() public
从集合中删除规则。
-
removeCreate() public
从创建集合中删除规则。
-
removeDelete() public
从删除集合中删除规则。
-
removeUpdate() public
从更新集合中删除规则。
-
validCount() public
验证关联记录的数量。
方法详情
__construct() ¶ public
__construct(array<string, mixed> $options = [])
构造函数。接收要传递给所有规则的选项。
参数
-
array<string, mixed>
$options optional 传递给每个规则的选项
_addError() ¶ protected
_addError(callable $rule, array|string|null $name = null, array<string, mixed> $options = []): Cake\Datasource\RuleInvoker
用于装饰任何可调用函数的实用程序方法,以便如果它返回 false,实体中的正确属性将被标记为无效。
参数
-
callable
$rule 要装饰的规则
-
array|string|null
$name optional 规则的别名或选项数组
-
array<string, mixed>
$options optional 包含错误消息和字段的选项。
返回值
Cake\Datasource\RuleInvoker
_addLinkConstraintRule() ¶ protected
_addLinkConstraintRule(Cake\ORM\Association|string $association, string|null $errorField, string|null $message, string $linkStatus, string $ruleName): Cake\Datasource\RuleInvoker
添加链接约束规则。
参数
-
Cake\ORM\Association|string
$association 要检查链接的关联。
-
string|null
$errorField 用于设置可能的错误的属性名称。如果不存在,则从
$association
推断出名称。-
string|null
$message 如果规则未通过,则显示的错误消息。
-
string
$linkStatus 检查通过所需的链接状态。
-
string
$ruleName 规则的别名/名称。
返回值
Cake\Datasource\RuleInvoker
抛出
InvalidArgumentException
如果 `$association` 参数类型无效。
参见
\Cake\ORM\RulesChecker::isNotLinkedTo()
\Cake\ORM\Rule\LinkConstraint::STATUS_LINKED
\Cake\ORM\Rule\LinkConstraint::STATUS_NOT_LINKED
_checkRules() ¶ 受保护的
_checkRules(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = [], arrayCake\Datasource\RuleInvoker> $rules = []): bool
由顶级函数 checkDelete、checkCreate 和 checkUpdate 使用,此函数迭代包含要检查规则的数组,并检查所有规则。
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
array<string, mixed>
$options optional 传递给检查器函数的额外选项。
-
array<string, Cake\Datasource\RuleInvoker>
$rules 可选的 必须检查的规则列表。
返回值
布尔值
add() ¶ 公共的
add(callable $rule, array|string|null $name = null, array<string, mixed> $options = []): $this
添加一个规则,该规则将在创建和更新操作中应用于实体。
选项
选项数组接受以下特殊键
errorField
: 如果规则不通过,将被标记为无效的实体字段的名称。message
: 如果规则不通过,要设置为errorField
的错误消息。
参数
-
callable
$rule 一个可调用函数或对象,它将返回实体是否有效。
-
array|string|null
$name optional 规则的别名,或一个选项数组。
-
array<string, mixed>
$options optional 传递给规则可调用函数的额外选项列表,作为第二个参数。
返回值
$this
抛出
Cake\Core\Exception\CakeException
如果具有相同名称的规则已存在
addCreate() ¶ 公共的
addCreate(callable $rule, array|string|null $name = null, array<string, mixed> $options = []): $this
添加一个规则,该规则将在创建操作中应用于实体。
选项
选项数组接受以下特殊键
errorField
: 如果规则不通过,将被标记为无效的实体字段的名称。message
: 如果规则不通过,要设置为errorField
的错误消息。
参数
-
callable
$rule 一个可调用函数或对象,它将返回实体是否有效。
-
array|string|null
$name optional 规则的别名或选项数组。
-
array<string, mixed>
$options optional 传递给规则可调用函数的额外选项列表,作为第二个参数。
返回值
$this
抛出
Cake\Core\Exception\CakeException
如果具有相同名称的规则已存在
addDelete() ¶ 公共的
addDelete(callable $rule, array|string|null $name = null, array<string, mixed> $options = []): $this
添加一个规则,该规则将在删除操作中应用于实体。
选项
选项数组接受以下特殊键
errorField
: 如果规则不通过,将被标记为无效的实体字段的名称。message
: 如果规则不通过,要设置为errorField
的错误消息。
参数
-
callable
$rule 一个可调用函数或对象,它将返回实体是否有效。
-
array|string|null
$name optional 规则的别名,或一个选项数组。
-
array<string, mixed>
$options optional 传递给规则可调用函数的额外选项列表,作为第二个参数。
返回值
$this
抛出
Cake\Core\Exception\CakeException
如果具有相同名称的规则已存在
addUpdate() ¶ 公共的
addUpdate(callable $rule, array|string|null $name = null, array<string, mixed> $options = []): $this
添加一个规则,该规则将在更新操作中应用于实体。
选项
选项数组接受以下特殊键
errorField
: 如果规则不通过,将被标记为无效的实体字段的名称。message
: 如果规则不通过,要设置为errorField
的错误消息。
参数
-
callable
$rule 一个可调用函数或对象,它将返回实体是否有效。
-
array|string|null
$name optional 规则的别名,或一个选项数组。
-
array<string, mixed>
$options optional 传递给规则可调用函数的额外选项列表,作为第二个参数。
返回值
$this
抛出
Cake\Core\Exception\CakeException
如果具有相同名称的规则已存在
check() ¶ 公共的
check(Cake\Datasource\EntityInterface $entity, string $mode, array<string, mixed> $options = []): bool
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。要应用的规则取决于 $mode 参数,该参数只能是 RulesChecker::CREATE、RulesChecker::UPDATE 或 RulesChecker::DELETE
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
string
$mode “创建”、“更新”或“删除”。
-
array<string, mixed>
$options optional 传递给检查器函数的额外选项。
返回值
布尔值
抛出
InvalidArgumentException
如果传递了无效的模式。
checkCreate() ¶ 公共的
checkCreate(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选定的规则将仅是那些指定在 'create' 上运行的规则。
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
array<string, mixed>
$options optional 传递给检查器函数的额外选项。
返回值
布尔值
checkDelete() ¶ 公共的
checkDelete(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选定的规则将仅是那些指定在 'delete' 上运行的规则。
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
array<string, mixed>
$options optional 传递给检查器函数的额外选项。
返回值
布尔值
checkName() ¶ 受保护的
checkName(string $name, arrayCake\Datasource\RuleInvoker> $rules): void
检查规则是否已存在。
参数
-
string
$name 要检查的名称
-
array<string, Cake\Datasource\RuleInvoker>
$rules 要检查的规则数组
返回值
void
抛出
Cake\Core\Exception\CakeException
checkUpdate() ¶ 公共的
checkUpdate(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选定的规则将仅是那些指定在 'update' 上运行的规则。
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
array<string, mixed>
$options optional 传递给检查器函数的额外选项。
返回值
布尔值
existsIn() ¶ 公共的
existsIn(list<string>|string $field, Cake\ORM\TableCake\ORM\Association|string $table, array<string, mixed>|string|null $message = null): Cake\Datasource\RuleInvoker
返回一个可调用函数,该函数可用作规则来检查从实体中提取的值是否作为主键存在于另一个表中。
这对于强制执行外键完整性检查很有用。
示例
$rules->add($rules->existsIn('author_id', 'Authors', 'Invalid Author'));
$rules->add($rules->existsIn('site_id', new SitesTable(), 'Invalid Site'));
可用的 $options
是错误“消息”和“allowNullableNulls”标志。“消息”设置自定义错误消息。将“allowNullableNulls”设置为 true 以接受一个或多个可为空列为空的复合外键。
参数
-
list<string>|string
$field 要通过主键查找在另一个表中检查是否存在字段或字段列表。
-
Cake\ORM\Table|Cake\ORM\Association|string
$table 将检查字段存在的表名。
-
array<string, mixed>|string|null
$message 可选的 如果规则不通过,要显示的错误消息。也可以是选项数组。当为数组时,可以使用“message”键来提供消息。
返回值
Cake\Datasource\RuleInvoker
isLinkedTo() ¶ 公共的
isLinkedTo(Cake\ORM\Association|string $association, string|null $field = null, string|null $message = null): Cake\Datasource\RuleInvoker
验证是否存在指向给定关联的链接。
示例
$rules->addUpdate($rules->isLinkedTo('Articles', 'article'));
在具有 belongsTo Articles
关联的 Comments
表中,此检查将确保只有当评论与现有文章关联时才能编辑它们。
参数
-
Cake\ORM\Association|string
$association 要检查链接的关联。
-
string|null
$field 可选的 关联属性的名称。当提供时,这是用于设置可能的错误的名称。当不存在时,该名称是从
$association
推断出来的。-
string|null
$message 可选的 如果规则未通过,则显示的错误消息。
返回值
Cake\Datasource\RuleInvoker
isNotLinkedTo() ¶ 公共的
isNotLinkedTo(Cake\ORM\Association|string $association, string|null $field = null, string|null $message = null): Cake\Datasource\RuleInvoker
验证是否存在指向给定关联的链接。
示例
$rules->addDelete($rules->isNotLinkedTo('Comments', 'comments'));
在具有 hasMany Comments
关联的 Articles
表中,此检查将确保只有当没有关联评论时才能删除文章。
参数
-
Cake\ORM\Association|string
$association 要检查链接的关联。
-
string|null
$field 可选的 关联属性的名称。当提供时,这是用于设置可能的错误的名称。当不存在时,该名称是从
$association
推断出来的。-
string|null
$message 可选的 如果规则未通过,则显示的错误消息。
返回值
Cake\Datasource\RuleInvoker
isUnique() ¶ 公共的
isUnique(list<string> $fields, array<string, mixed>|string|null $message = null): Cake\Datasource\RuleInvoker
返回一个可调用函数,该函数可用作规则来检查表中值的唯一性。
示例
$rules->add($rules->isUnique(['email'], 'The email should be unique'));
选项
allowMultipleNulls
允许任何字段具有多个空值。默认值为 false。
参数
-
list<string>
$fields 要检查唯一性的字段列表。
-
array<string, mixed>|string|null
$message 可选的 如果规则不通过,要显示的错误消息。也可以是选项数组。当为数组时,可以使用“message”键来提供消息。
返回值
Cake\Datasource\RuleInvoker
removeCreate() ¶ 公共的
removeCreate(string $name): $this
从创建集合中删除规则。
参数
-
string
$name 要删除的规则的名称。
返回值
$this
removeDelete() ¶ 公共的
removeDelete(string $name): $this
从删除集合中删除规则。
参数
-
string
$name 要删除的规则的名称。
返回值
$this
removeUpdate() ¶ 公共的
removeUpdate(string $name): $this
从更新集合中删除规则。
参数
-
string
$name 要删除的规则的名称。
返回值
$this
validCount() ¶ 公共的
validCount(string $field, int $count = 0, string $operator = '>', string|null $message = null): Cake\Datasource\RuleInvoker
验证关联记录的数量。
参数
-
string
$field 要检查计数的字段。
-
int
$count 可选的 预期的计数。
-
string
$operator 可选的 计数比较的操作符。
-
string|null
$message 可选的 如果规则未通过,则显示的错误消息。
返回值
Cake\Datasource\RuleInvoker