类 RulesChecker
包含用于存储和检查实体规则的逻辑
RulesCheckers 由 Table 类使用,以确保当前实体状态满足应用程序逻辑和业务规则。
RulesCheckers 可以根据不同的规则在创建和更新场景中应用。
添加规则
规则必须是可调用的对象,根据规则是否满足返回 true/false。您可以使用 RulesChecker::add()、RulesChecker::addCreate()、RulesChecker::addUpdate() 和 RulesChecker::addDelete 将规则添加到检查器中。
运行检查
通常 Table 对象会调用规则对象,但您可以通过调用 RulesChecker::checkCreate()、RulesChecker::checkUpdate() 或 RulesChecker::checkDelete() 手动调用检查。
常量
属性摘要
-
$_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,则实体中的正确属性将被标记为无效。
-
_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。选择的规则将仅是那些指定在“创建”时运行的规则。
-
checkDelete() public
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选择的规则将仅是那些指定在“删除”时运行的规则。
-
checkName() protected
检查具有相同名称的规则是否已存在
-
checkUpdate() public
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选择的规则将仅是那些指定在“更新”时运行的规则。
-
remove() public
从集合中删除一个规则。
-
removeCreate() public
从创建集合中删除一个规则。
-
removeDelete() public
从删除集合中删除一个规则。
-
removeUpdate() 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
_checkRules() ¶ protected
_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 要传递给检查函数的额外选项。
-
arrayCake\Datasource\RuleInvoker>
$rules optional 必须检查的规则列表。
返回
布尔
add() ¶ public
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() ¶ public
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() ¶ public
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() ¶ public
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() ¶ public
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() ¶ public
checkCreate(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选择的规则将仅是那些指定在“创建”时运行的规则。
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
array<string, mixed>
$options optional 要传递给检查函数的额外选项。
返回
布尔
checkDelete() ¶ public
checkDelete(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选择的规则将仅是那些指定在“删除”时运行的规则。
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
array<string, mixed>
$options optional 要传递给检查函数的额外选项。
返回
布尔
checkName() ¶ protected
checkName(string $name, arrayCake\Datasource\RuleInvoker> $rules): void
检查具有相同名称的规则是否已存在
参数
-
string
$name 要检查的名称
-
arrayCake\Datasource\RuleInvoker>
$rules 要检查的规则数组
返回
void
抛出
Cake\Core\Exception\CakeException
checkUpdate() ¶ public
checkUpdate(Cake\Datasource\EntityInterface $entity, array<string, mixed> $options = []): bool
通过传递提供的实体运行每个规则,如果所有规则都通过则返回 true。选择的规则将仅是那些指定在“更新”时运行的规则。
参数
-
Cake\Datasource\EntityInterface
$entity 要检查有效性的实体。
-
array<string, mixed>
$options optional 要传递给检查函数的额外选项。
返回
布尔
removeCreate() ¶ public
removeCreate(string $name): $this
从创建集合中删除一个规则。
参数
-
string
$name 要移除的规则的名称。
返回
$this
removeDelete() ¶ public
removeDelete(string $name): $this
从删除集合中删除一个规则。
参数
-
string
$name 要移除的规则的名称。
返回
$this
removeUpdate() ¶ public
removeUpdate(string $name): $this
从更新集合中删除一个规则。
参数
-
string
$name 要移除的规则的名称。
返回
$this