nepada/email-address-input

Nette 表单的电子邮件地址输入表单。

v1.9.0 2023-09-28 20:22 UTC

README

Build Status Coverage Status Downloads this Month Latest stable

安装

通过 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。