如何通过XML(Zend_Config)配置表单来加载自定义表单元素时扩展Zend_Form前缀路径?

时间:2012-02-12 11:33:17

标签: zend-framework zend-form zend-form-element

我正在从XML文件加载Zend_Form:

<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 :(得分:0)

这是正确的表单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>

自定义选项将在Element

的构造函数的$ 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
    }
}