nepada/email-address-input
Nette 表单的电子邮件地址输入表单。
v1.9.0
2023-09-28 20:22 UTC
Requires
- php: >=8.1.0 <8.4
- nepada/email-address: ^2.3@dev || ^3.0@dev
- nette/forms: ^3.1@dev
- nette/utils: ^3.2@dev || ^4.0@dev
Requires (Dev)
- nepada/coding-standard: 7.13.0
- nepada/phpstan-nette-tester: 1.1.0
- nette/bootstrap: >=3.1@dev
- nette/component-model: >=3.0.2
- nette/di: ^3.0.6@dev
- nette/http: >=3.1@dev
- nette/tester: 2.5.1
- php-parallel-lint/php-parallel-lint: 1.3.2
- phpstan/phpstan: 1.10.32
- phpstan/phpstan-nette: 1.2.9
- phpstan/phpstan-strict-rules: 1.5.1
- shipmonk/phpstan-rules: 2.7.0
- spaze/phpstan-disallowed-calls: 2.16.0
README
安装
通过 Composer
$ composer require nepada/email-address-input
选项 A:通过 DI 扩展安装表单容器扩展方法
extensions: - Nepada\Bridges\EmailAddressInputDI\EmailAddressInputExtension
它将为 Nette\Forms\Container
注册扩展方法 addEmailAddress($name, $label, $caseSensitive = false)
。
选项 B:在基表单/容器类中使用 trait
您也可以在基表单/容器类中使用 EmailAddressInputMixin
trait 来添加方法 addEmailAddress($name, $label, $caseSensitive = false)
。
示例
trait FormControls { use Nepada\Bridges\EmailAddressInputForms\EmailAddressInputMixin; public function addContainer($name) { $control = new Container; $control->setCurrentGroup($this->getCurrentGroup()); if ($this->currentGroup !== null) { $this->currentGroup->add($control); } return $this[$name] = $control; } } class Container extends Nette\Forms\Container { use FormControls; } class Form extends Nette\Forms\Form { use FormControls; }
用法
EmailAddressInput
是一个表单控件,它使用电子邮件地址值对象来表示其值(有关更多详细信息,请参阅 nepada/email-address)。它自动验证用户输入,并且 getValue()
方法始终返回 EmailAddress
实例,如果输入未填写则返回 null
。
$emailAddressInput = $form->addEmailAddress('E-mail'); // set value using EmailAddress value object $emailAddressInput->setValue(CaseInsensitiveEmailAddress::fromString('example@example.com')); // set value using string with a valid email address (it is internally converted to EmailAddress value object) $emailAddressInput->setValue('example@example.com'); // Get EmailAddress instance for example@example.com $emailAddressInput->getValue(); // InvalidEmailAddressException is thrown $emailAddressInput->setValue('42');
大小写敏感度
默认情况下,输入返回 CaseInsensitiveEmailAddress
实例,即将整个电子邮件地址视为不区分大小写的值对象。
您可以通过调用 EmailAddressInput::setCaseSensitive(true)
或在创建输入时传递 $caseSensitive = true
来更改此行为。启用大小写敏感度后,输入的值将表示为 RfcEmailAddress
实例。
有关更多详细信息,请参阅 nepada/email-address 的 README。