Zend framework 在Zend表单元素提交中禁用转义

Zend framework 在Zend表单元素提交中禁用转义,zend-framework,zend-form,Zend Framework,Zend Form,我无法在Zend_Form_元素_Submit中禁用转义,因此当标签具有特殊字符时,它不会显示其值 这是我实际的Zend表单代码: $this->submit = new Zend_Form_Element_Submit('submit'); $this->submit->setLabel('Iniciar Sesión'); $this->submit->setIgnore(true); $this->addElement($this->submit)

我无法在Zend_Form_元素_Submit中禁用转义,因此当标签具有特殊字符时,它不会显示其值

这是我实际的Zend表单代码:

$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)但是我得到了一个“非对象”错误(可能submit没有使用“标签”装饰器)


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

应该很简单:

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

或参见
setEscape()


关于检索命名装饰程序失败。。。请尝试
getDecorators()
是否在结果中看到“label”?

默认情况下,提交表单元素没有标签decorator(这就是出现错误的原因)。
$this->submit->setLabel('Iniciar Sesión')值转到Zend\u View\u Helper\u FormSubmit,它总是进行转义并将标签用作值。

默认情况下,Submit元素使用的帮助器将转义。与标签装饰器不同,提交标签包含在HTML属性中,因此它们需要转义

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


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

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

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

在我的测试中,
setEscape()。不过,元素的装饰器可能使用默认为ISO-8599-1的
htmlentities
,所以我的答案可能仍然适用。显然,还要确保doctype、encoding、content type等都设置为UTF-8。标签装饰器不知道setEscape,
$form->getElement($elemName)->getDecorator('Label')->setOption('escape',false)确实起到了作用。我需要它包含一个