类 表单
表单抽象用于创建不绑定到 ORM 支持的模型或其他持久数据存储的表单。非常适合在 API 服务或联系表单之上实现表单。
构建表单
此类在子类化时最为有用。在子类中,您应该定义 _buildSchema
、validationDefault
和可选的 _execute
方法。这些允许您分别声明表单的字段、验证和主要操作。
表单通常放在 App\Form
命名空间中。
常量
属性摘要
-
$_data protected
数组
表单的数据。
-
$_errors protected
数组
如果有的话,错误
-
$_eventClass protected
字符串
新事件对象的默认类名。
-
$_eventManager protected
Cake\Event\EventManagerInterface|null
此对象用来分派内部事件的 Cake\Event\EventManager 实例。
-
$_schema protected
Cake\Form\Schema|null
此表单使用的模式。
-
$_schemaClass protected
字符串
模式类。
-
$_validatorClass protected
字符串
验证器类。
-
$_validators protected
arrayCake\Validation\Validator>
按名称索引的验证对象列表
方法摘要
-
__construct() public
构造函数
-
__debugInfo() public
获取 Form 实例的可打印版本。
-
_buildSchema() protected
旨在由子类实现的挂钩方法。
-
_execute() protected
要在子类中实现的挂钩方法。
-
createValidator() protected
使用类中的自定义方法创建验证器。
-
dispatchEvent() public
创建和分派事件的包装器。
-
execute() public
如果表单有效,则执行表单。
-
getData() public
获取字段数据。
-
getError() public
返回给定字段的验证错误
-
getErrors() public
获取表单中的错误
-
getEventManager() public
返回此对象的 Cake\Event\EventManager 管理器实例。
-
getSchema() public
获取此表单的模式。
-
getValidator() public
返回标记为 $name 的验证规则。可以有多个不同的命名验证集,这在您需要在系统中从不同例程保存时使用不同的规则时很有用。
-
hasValidator() public
检查是否设置了验证器。
-
implementedEvents() public
获取此表单感兴趣的 Form 回调。
-
set() public
保存变量或关联变量数组以供表单数据内部使用。
-
setData() public
设置表单数据。
-
setErrors() public
设置表单中的错误。
-
setEventManager() public
返回此对象的 Cake\Event\EventManagerInterface 实例。
-
setSchema() public
设置此表单的模式。
-
setValidator() public
此方法在给定名称下存储自定义验证器。
-
validate() public
用于检查 $data 是否通过此表单的验证。
-
validationDefault() public
返回默认验证器对象。子类可以覆盖此函数以向验证器对象添加默认验证集。
-
validationMethodExists() protected
检查验证方法是否存在。
方法详情
__construct() ¶ public
__construct(Cake\Event\EventManager|null $eventManager = null)
构造函数
参数
-
Cake\Event\EventManager|null
$eventManager optional 事件管理器。默认为新实例。
__debugInfo() ¶ public
__debugInfo(): array<string, mixed>
获取 Form 实例的可打印版本。
返回
array<string, mixed>
_buildSchema() ¶ protected
_buildSchema(Cake\Form\Schema $schema): Cake\Form\Schema
旨在由子类实现的挂钩方法。
您可以使用此方法使用 {@link \Cake\Form\Schema} 上的方法定义模式,或从具体类加载预定义的模式。
参数
-
Cake\Form\Schema
$schema 要自定义的模式。
返回
Cake\Form\Schema
_execute() ¶ protected
_execute(array $data): bool
要在子类中实现的挂钩方法。
由 execute()
用于执行表单的操作。
参数
-
array
$data 表单数据。
返回
bool
createValidator() ¶ protected
createValidator(string $name): Cake\Validation\Validator
使用类中的自定义方法创建验证器。
此方法仅用于构建新的验证器,它不会将其存储在您的对象中。如果您想构建和重用验证器,请改用 getValidator() 方法。
参数
-
string
$name 要创建的验证集的名称。
返回
Cake\Validation\Validator
抛出
InvalidArgumentException
dispatchEvent() ¶ public
dispatchEvent(string $name, array $data = [], TSubject|null $subject = null): Cake\Event\EventInterface<TSubject>
创建和分派事件的包装器。
返回分派的事件。
参数
-
string
$name 事件的名称。
-
array
$data optional 您希望随此事件一起传输的任何值都可以由监听器读取。
-
TSubject|null
$subject optional 此事件适用的对象(默认为 $this)。
返回
Cake\Event\EventInterface<TSubject>
execute() ¶ public
execute(array $data, array<string, mixed> $options = []): bool
如果表单有效,则执行表单。
首先验证表单,然后调用 _execute()
挂钩方法。此挂钩方法可以在子类中实现以执行表单的操作。这可能是发送电子邮件、与远程 API 交互,或您可能需要的任何其他操作。
选项
- validate: 设置为
false
以禁用验证。也可以是字符串形式的要应用的验证规则集。默认为true
/'default'
。
参数
-
array
$data 表单数据。
-
array<string, mixed>
$options optional 选项列表。
返回
bool
getData() ¶ public
getData(string|null $field = null): mixed
获取字段数据。
参数
-
string|null
$field 可选 字段名称或 null,获取包含所有字段的数据数组。
返回
混合类型
getEventManager() ¶ public
getEventManager(): Cake\Event\EventManagerInterface
返回此对象的 Cake\Event\EventManager 管理器实例。
您可以使用此实例为对象事件注册任何新的侦听器或回调,或者创建您自己的事件并随意触发它们。
返回
Cake\Event\EventManagerInterface
getSchema() ¶ public
getSchema(): Cake\Form\Schema
获取此表单的模式。
此方法将在首次构建模式时调用 _buildSchema()
。此挂钩方法允许您配置模式或加载预定义的模式。
返回
Cake\Form\Schema
getValidator() ¶ public
getValidator(string|null $name = null): Cake\Validation\Validator
返回标记为 $name 的验证规则。可以有多个不同的命名验证集,这在您需要在系统中从不同例程保存时使用不同的规则时很有用。
如果之前没有设置验证器,此方法将使用您类中的方法构建一个验证器。
例如,如果您希望创建一个名为“forSubscription”的验证集,您需要在 Table 子类中创建如下方法
public function validationForSubscription($validator)
{
return $validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->requirePresence('username');
}
$validator = $this->getValidator('forSubscription');
如果您希望有一个在没有指定其他集合的情况下适用的验证集,可以在 Table 子类中实现 validationDefault
方法。
如果没有提供 $name 参数,则将返回默认验证器。您可以在 DEFAULT_VALIDATOR
类常量中配置默认验证器名称。
参数
-
string|null
$name 可选 要返回的验证集的名称。
返回
Cake\Validation\Validator
hasValidator() ¶ public
hasValidator(string $name): bool
检查是否设置了验证器。
参数
-
string
$name 验证器的名称。
返回
bool
implementedEvents() ¶ public
implementedEvents(): array<string, mixed>
获取此表单感兴趣的 Form 回调。
约定方法映射为
- Form.buildValidator => buildValidator
返回
array<string, mixed>
set() ¶ public
set(array|string $name, mixed $value = null): $this
保存变量或关联变量数组以供表单数据内部使用。
参数
-
array|string
$name 要写入的键,可以是点表示法值。或者可以是一个包含键和值的数组。
-
mixed
$value 可选 要为 var 设置的值
返回
$this
setErrors() ¶ public
setErrors(array $errors): $this
设置表单中的错误。
$errors = [
'field_name' => ['rule_name' => 'message']
];
$form->setErrors($errors);
参数
-
array
$errors 错误列表。
返回
$this
setEventManager() ¶ public
setEventManager(Cake\Event\EventManagerInterface $eventManager): $this
返回此对象的 Cake\Event\EventManagerInterface 实例。
您可以使用此实例为对象事件注册任何新的侦听器或回调,或者创建您自己的事件并随意触发它们。
参数
-
Cake\Event\EventManagerInterface
$eventManager 要设置的 eventManager
返回
$this
setSchema() ¶ public
setSchema(Cake\Form\Schema $schema): $this
设置此表单的模式。
参数
-
Cake\Form\Schema
$schema 要设置的模式
返回
$this
setValidator() ¶ public
setValidator(string $name, Cake\Validation\Validator $validator): $this
此方法在给定名称下存储自定义验证器。
您可以自己构建对象并将其存储在您的对象中
$validator = new \Cake\Validation\Validator();
$validator
->add('email', 'valid-email', ['rule' => 'email'])
->add('password', 'valid', ['rule' => 'notBlank'])
->allowEmpty('bio');
$this->setValidator('forSubscription', $validator);
参数
-
string
$name 要设置的验证器的名称。
-
Cake\Validation\Validator
$validator 要设置的验证器对象。
返回
$this
validate() ¶ public
validate(array $data, string|null $validator = null): bool
用于检查 $data 是否通过此表单的验证。
参数
-
array
$data 要检查的数据。
-
string|null
$validator 可选 验证器名称。
返回
bool
抛出
RuntimeException
如果验证器无效。
validationDefault() ¶ public
validationDefault(Cake\Validation\Validator $validator): Cake\Validation\Validator
返回默认验证器对象。子类可以覆盖此函数以向验证器对象添加默认验证集。
参数
-
Cake\Validation\Validator
$validator 可以修改的验证器,以便向其中添加一些规则。
返回
Cake\Validation\Validator
validationMethodExists() ¶ protected
validationMethodExists(string $name): bool
检查验证方法是否存在。
参数
-
string
$name 验证方法名称。
返回
bool
属性详细信息
$_eventManager ¶ protected
此对象用来分派内部事件的 Cake\Event\EventManager 实例。
类型
Cake\Event\EventManagerInterface|null