代码之家  ›  专栏  ›  技术社区  ›  cEz

zend_form的xml配置:子节点和属性不总是相等的?

  •  0
  • cEz  · 技术社区  · 16 年前

    我一直在处理的一组表单(使用zend_form)让我在试图找出xml配置的错误时感到有些头疼,因为我不断地为特定的输入元素获得意外的html输出。它本来应该得到一个默认值,但什么也没有出现。

    当用于实例化zend_form时,以下两个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>
    

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

    这是预期的吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   cEz    15 年前

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

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

    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
    

    因此,我浏览了文档后发现,在加载到zend_config_xml的xml文件中,当用作属性时,“value”是一个保留关键字:

    Example #2 Using Tag Attributes in Zend_Config_Xml

    “.zend_config_xml还支持两个 定义节点的其他方法 配置。两者都利用 属性。因为延伸和 值属性是保留关键字 (后者一个接一个 使用属性),它们可能不是 用过……”

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

        2
  •  0
  •   DASPRiD    15 年前

    别担心这个。保留的关键字被移动到它们自己的名称空间中,先前的属性被删除。在zend framework 2.0中,非命名空间属性将被删除,以便您可以再次使用它们。

    推荐文章