0

我一直在处理的一组表单(使用 Zend_Form)让我有些头疼,试图找出我的 XML 配置出了什么问题,因为我不断收到特定 INPUT 元素的意外 HTML 输出。它应该得到一个默认值,但什么也没出现。

在用于实例化 Zend_Form 时,以下 2 段 XML 似乎不相等:

片段#1:

<form>
  <elements>
    <test type="hidden">
      <options ignore="true" value="foo"/>
    </test>
  </elements>
</form>

片段#2:

<form>
  <elements>
    <test type="hidden">
      <options ignore="true">
        <value>foo</value>
      </options>
    </test>
  </elements>
</form>

元素的类型似乎没有区别,因此它似乎与隐藏字段无关。

这是预期的还是不预期的?

4

2 回答 2

0

由于这里相当安静,我进一步查看了源代码和文档。

在 Zend_Config_Xml 的第 259 行,SimpleXMLElement 对象属性被转换为字符串,结果是:

options Object of: SimpleXMLElement 
    @attributes Array [2]   
        label   (string:7) I can't see this because 
        value   (string:21) something happens to this

变得

options (string:21) something happens to this

所以,我翻遍了文档,发现“value”是一个保留关键字,当它用作加载到 Zend_Config_Xml 的 XML 文件中的属性时:

Example #2 在 Zend_Config_Xml 中使用标签属性

"..Zend_Config_Xml 还支持另外两种在配置中定义节点的方式。两者都使用属性。由于extends和value属性是保留关键字(后一种是使用属性的第二种方式),因此可能不会使用它们……”

因此,根据文档,这似乎是“预期的”。不过,考虑到“价值”是表单元素的一个属性,我并不完全高兴这是一个好主意。

于 2010-06-10T21:17:39.720 回答
0

不要担心这个。保留的关键字被移动到它们自己的命名空间,并且以前的属性被贬低了。在 Zend Framework 2.0 中,非命名空间属性将被删除,因此您可以再次使用它们。

于 2010-08-22T01:37:33.747 回答