/ / ¿Cómo extender la ruta del prefijo Zend_Form mientras se configura el formulario a través de XML (Zend_Config) para cargar elementos de formulario personalizados? - zend-framework, zend-form, zend-form-element

¿Cómo extender la ruta del prefijo Zend_Form al configurar el formulario a través de XML (Zend_Config) para cargar elementos de formulario personalizados? - zend-framework, zend-form, zend-form-element

Estoy cargando mi Zend_Form desde un archivo 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>

Por supuesto, el siguiente XML no funciona, ya que Zend no sabe cómo cargar mi campo personalizado (que es solo una extensión de Zend_Form_Element_Select), pero la siguiente línea no funciona, si alguien puede ayudar:

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

Encontré estas características de configuración realmente geniales, peroencontrar información o tutorial sobre ellos es realmente difícil (sé que hay una regla de mapeo entre la estructura de objetos Zend_Form y el archivo de configuración esperado, pero nunca encontré una descripción completa si alguien tiene un enlace)

Respuestas

0 para la respuesta № 1

Aquí está la descripción correcta del formulario 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>

Las opciones personalizadas se enviarán dentro del argumento $ options del constructor de tu elemento

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
}
}