El problema es el funcionamiento, Zend_Form_Element utiliza lazy loading para los validators, Zend_Form_Element::clearValidators deja a 0 los validators pero no deja en false a registerInArrayValidator, entonces al disparar el Zend_Form_Element::isValid carga el validator y lo dispara.
No hay diferencias al definir los elementos creandolos o seteandolos como opciones, en lo personal prefiero esto último, algo asi:
Código PHP:
Ver original//init
'method' => Zend_Form::METHOD_POST,
'label' => 'Username',
'required' => true,
'filters' => array('StripTags', 'StringTrim'), new GOU_Validate_Db_Doctrine2_NoRecordExists(
'entity' => '\GOU\Entity\User',
'field' => 'username'
)
)
)
)),
'label' => 'Email',
'required' => true,
'filters' => array('StripTags', 'StringTrim'), new GOU_Validate_Db_Doctrine2_NoRecordExists(
'entity' => '\GOU\Entity\User',
'field' => 'email'
)
)
)
)),
...
En cuanto a los scripts, deberían estar en un fichero aparte y cargarlos con el view helper headScript y te sugiero que el javascript no sea intrusivo, en vez de setear en el select el onchange, asignale un id al select y luego con jQuery le asignas el evento onchange.
Saludos.