1

我不能在 Zend_Form_Element_Submit 中禁用转义,所以当标签有特殊字符时,它不会显示它的值..

这是我实际的 Zend Form 代码:

$this->submit = new Zend_Form_Element_Submit('submit');
$this->submit->setLabel('Iniciar Sesión');
$this->submit->setIgnore(true);
$this->addElement($this->submit);

我试过$this->submit->getDecorator('Label')->setOption('escape', false);了,但我得到一个“非对象”错误(可能提交没有使用“标签”装饰器)..

我也按照建议尝试过,$this->submit->setAttrib('escape', false);但也不会显示任何文字..有什么想法吗?谢谢

4

4 回答 4

1

Submit 元素使用的助手默认转义。与标签装饰器不同,提交标签包含在 HTML 属性中,因此需要对其进行转义。

您的标签 - Iniciar Sesión - 是一个完全有效的 UTF-8 字符串,因此它的转义版本将是相同的。如果您的标签没有出现,那么其他地方出了问题。我猜您的页面使用的字符集与 Zend View 使用的字符集不匹配(默认为 UTF-8)。

查看页面源代码以查看实际输出的内容 - 这可能会给您更多线索。或者,如果此表单所在的页面是公开的,如果您可以提供一个 URL,我们或许能够发现问题。

于 2012-11-28T17:34:42.173 回答
1

默认情况下,提交表单元素没有标签装饰器(这就是您收到错误的原因)。该$this->submit->setLabel('Iniciar Sesión');值转到 Zend_View_Helper_FormSubmit,它总是进行转义并将标签用作值。

于 2012-11-28T17:02:36.617 回答
1

应该像这样做一样简单:

$element->addDecorator('Label', аrray('escape'=>false));

或见setEscape()http://framework.zend.com/manual/1.12/en/zend.form.standardDecorators.html

关于未能检索命名装饰器...尝试getDecorators() 您在结果中看到“标签”吗?

于 2012-11-28T16:19:02.220 回答
0

我遇到了类似的问题。在我的例子中,我向文本字段元素添加了标签和描述。这行代码允许我关闭附加到该字段元素的描述的 html 转义:

$form->getElement('txtUPC')->getDecorator('description')->setOption('escape', false);

在我的测试中,setEscape()表单元素或其装饰器无法识别。

于 2014-05-23T21:24:13.787 回答