gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:47:50 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com