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

时间:2012-11-28 15:29:17

标签: zend-framework zend-form

我无法在Zend_Form_Element_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);但是我得到了一个“非对象”错误(也许提交没有使用“Label”装饰器)..

我也按照建议$this->submit->setAttrib('escape', false);进行了尝试,但也没有显示任何文字。任何想法?感谢

4 个答案:

答案 0 :(得分:1)

应该像这样简单:

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

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

关于无法检索命名装饰器...尝试getDecorators()您是否在结果中看到'标签'?

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

您的标签 - IniciarSesión - 是完全有效的UTF-8字符串,因此它的转义版本将是相同的。如果你的标签没有出现,那么别的东西就出错了。我猜你的页面是使用与Zend View使用的字符集不匹配的字符集(默认为UTF-8)。

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

答案 3 :(得分:0)

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

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

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