Конфигурация XML Zend_Form: дочерние узлы и атрибуты не всегда равны? - PullRequest
0 голосов
/ 06 мая 2010

Набор форм (с использованием Zend_Form), над которыми я работал, вызывал у меня некоторые головные боли, пытаясь выяснить, что не так с моей конфигурацией XML, поскольку я продолжал получать неожиданный вывод HTML для определенного элемента INPUT. Предполагалось, что он получит значение по умолчанию, но ничего не появилось.

Похоже, что следующие 2 фрагмента XML не равны при использовании для создания экземпляра Zend_Form:

Фрагмент №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 ]

0 голосов
/ 22 августа 2010

Не беспокойся об этом. Зарезервированные ключевые слова были перемещены в их собственное пространство имен, а предыдущие атрибуты были удалены. В Zend Framework 2.0 атрибуты без пространств имен будут удалены, чтобы вы могли использовать их снова.

0 голосов
/ 11 июня 2010

Поскольку здесь было довольно тихо, я заглянул в исходный код и документацию.

В строке 259 Zend_Config_Xml атрибуты объекта 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

Итак, я просмотрел документацию только для того, чтобы обнаружить, что «значение» является зарезервированным ключевым словом, когда используется в качестве атрибута в файле XML, который загружается в Zend_Config_Xml:

Пример # 2 Использование атрибутов тега в Zend_Config_Xml

".. Zend_Config_Xml также поддерживает два дополнительные способы определения узлов в конфигурация. Оба используют атрибутов. Поскольку расширяется и атрибуты значения являются зарезервированными ключевыми словами (последний по второму способу используя атрибуты), они не могут быть б ... "

Таким образом, это представляется «ожидаемым» согласно документации. Я не совсем счастлив, что это хорошая идея, учитывая, что «значение» является атрибутом элементов формы.

...