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 № 1Aquí 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
}
}