php - Zend Forms 电子邮件元素更改为文本

标签 php html zend-framework zend-form

我正在尝试在 Zend Forms 中创建类型为 email 的输入,但我无法完成预期的结果。

我创建了一个自定义类:

namespace AAA\Forms\Elements;

class Email extends \Zend_Form_Element_Text
{
    function __construct($name, $label, $required)
    {
        parent::__construct($name);
        $this->setAttrib('type', 'email');
        $this->setLabel($label)->setRequired($required);
    }
}

然后我像这样使用它:

class Application_Form_Register extends Zend_Form
{
    public function init()
    {
        // …
        $email = new AAA\Forms\Elements\Email('email', 'E-mail:', true);
        $this->addElement($email);
        // …
    }
}

我得到的是:

<input type="text" name="email" id="email" value="" type="email">

注意两个 type 参数。

我已经在 Bootstrap.php 中设置了 HTML5 文档类型($documentType = new Zend_View_Helper_Doctype(); $documentType->doctype('HTML5');)并且我有也试过这个:

function __construct($name, $label, $required)
{
    $options = array();
    $options['type'] = 'email';
    parent::__construct($name, $options);
    // …
}

我读过 Zend HTML5 Form element types但没有一个答案有效。我也尝试过 Glitch 库,但结果是一样的。

有人知道如何强制 Zend Framework 使用 HTML5 表单控件吗?

最佳答案

您还需要实现自己的 View 助手来呈现电子邮件表单元素。

Zend_Form_Element_Text使用 formText查看助手 ( Zend/View/Helper/FormText.php ) 来呈现 HTML 输入,它被硬编码为输出 <input type="text"渲染元素时。

两种可能的处理方式是:

  • 删除 ViewHelper来自元素的装饰器并使用 ViewScript渲染元素的助手。
  • 制作自己的 View 助手 formEmail几乎与 formText 相同除了它输出 type="email" ;并设置公众$helper Element 类中的属性为 formEmail .您将必须注册到 formEmail 的路径助手使用 Zend_View::addHelperPath()所以它将被 ViewHelper 找到装饰师。

关于php - Zend Forms 电子邮件元素更改为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11382954/

相关文章:

Fedora + Zend Server CE 上的 PHP 默认时区问题

javascript - jquery 删除中断标记

html - anchor 元素 <a> 的填充溢出

javascript - 如何从td读取隐藏值

php - MySQL 在更新其他字段时不更新数据库中的单个字段

php - 在 PHP 7.2 中完全替代 mcrypt_encrypt

php - 如何更改KCFinder中图像的默认浏览目录?

php - 有没有办法用 xdebug 只记录比 X 慢的执行?

zend-framework - Zend 框架 : This row has been marked read-only

php - Zend DB 表元数据对于整数列长度返回 null