Как расширить путь префикса Zend_Form при настройке формы через XML (Zend_Config) для загрузки пользовательских элементов формы? - PullRequest
1 голос
/ 12 февраля 2012

Я загружаю свой Zend_Form из XML-файла:

<form>    
  <elements>
    <role>
      <type>MyProject_Form_Element_Select_Roles</type>
      <options>
        <label>Role:</label>
        <value></value>
      </options>
    </role>
    <valid>
      <type>submit</type>
      <options>
        <label>Valid</label>
      </options>
    </valid>
  </elements>
</form>

Конечно, приведенный ниже XML не работает, так как Zend не знает, как загрузить мое настраиваемое поле (это просто расширениеZend_Form_Element_Select), но строка ниже не работает, если кто-то может помочь:

<form>
  <elementPrefixPath>
    <prefix>MyProject_Form_Element_Select</prefix>
    <path>MyProject/Form/Element/Select</path>
    <type>element</type>
  </elementPrefixPath>
...

Я нашел эти функции конфигурации действительно классными, но найти информацию или учебник по ним очень сложно (я знаю, что есть некоторое отображениеправило между структурой объектов Zend_Form и ожидаемым файлом конфигурации, но я так и не нашел полного описания, если у кого-то есть ссылка)

1 Ответ

0 голосов
/ 13 февраля 2012

Вот правильное описание XML формы:

<form>    
  <prefixPath>
    <element>
      <prefix>MyProject_Form_Element_Select</prefix>
      <path>MyProject/Form/Element/Select</path>
    </element>
  </prefixPath>
  <prefixPath>
    <element>
      <prefix>MyLib_Form_Element_Select</prefix>
      <path>MyLib/Form/Element/Select</path>
    </element>
  </prefixPath>


  <elements>
    <role>
      <type>Roles</type>
      <options>
        <label>Role:</label>
        <value></value>
      </options>
    </role>
    <valid>
      <type>submit</type>
      <options>
        <mycustomoption></mycustomoption>
        <label>Valid</label>
      </options>
    </valid>
  </elements>
</form>

Пользовательские параметры будут отправлены внутри аргумента $ options конструктора вашего элемента

class MyProject_Form_Element_Select_Roles extends Zend_Form_Element_Select
{
    public function __construct($spec, $options = null) {
        //don't forget to call parent !
        //$options is a Zend_Config that should have as a member mycustomptions
    }
}
...