编程语言
首页 > 编程语言> > PHP-Zend Forms电子邮件元素更改为文本

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

作者:互联网

我正在尝试在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">

注意两个类型参数.

我已经在Bootstrap.php中设置了HTML5 doctype($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,但所有答案都无效.我也尝试了故障库,但结果是一样的.

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

解决方法:

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

Zend_Form_Element_Text使用formText视图帮助器(Zend / View / Helper / FormText.php)呈现HTML输入,并且在呈现元素时很难编码以输出< input type =“ text”. 解决此问题的两种可能方法是:
>从元素中删除ViewHelper装饰器,然后使用ViewScript帮助器来呈现元素.
>使您自己的视图助手formEmail与formText几乎相同,只不过它输出type =“ email”;并将Element类中的公共$helper属性设置为formEmail.您将必须使用Zend_View :: addHelperPath()注册formEmail帮助器的路径,以便ViewHelper装饰器可以找到它.

标签:html5,zend-form,zend-framework,php
来源: https://codeday.me/bug/20191201/2078206.html