Ver Mensaje Individual
  #13 (permalink)  
Antiguo 16/06/2011, 17:27
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Selects dependientes y posterior envío de formulario

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
  1. //init
  2. $this->setOptions(array(
  3.             'method' => Zend_Form::METHOD_POST,
  4.             'elements' => array(
  5.                 'username' => array('text', array(
  6.                     'label'    => 'Username',
  7.                     'required' => true,
  8.                     'filters'  => array('StripTags', 'StringTrim'),
  9.                     'validators' => array(
  10.                         array('StringLength', false, array(5)),
  11.                         new GOU_Validate_Db_Doctrine2_NoRecordExists(
  12.                             array(
  13.                                 'entity' => '\GOU\Entity\User',
  14.                                 'field' => 'username'
  15.                             )
  16.                         )
  17.                     )
  18.                 )),
  19.                 'email' => array('text', array(
  20.                     'label'    => 'Email',
  21.                     'required' => true,
  22.                     'filters'  => array('StripTags', 'StringTrim'),
  23.                     'validators' => array(
  24.                         array('EmailAddress'),
  25.                         new GOU_Validate_Db_Doctrine2_NoRecordExists(
  26.                             array(
  27.                                 'entity' => '\GOU\Entity\User',
  28.                                 'field' => 'email'
  29.                             )
  30.                         )                      
  31.                     )
  32.                 )),
  33.                ...

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.
__________________
http://es.phptherightway.com/
thats us riders :)

Última edición por masterpuppet; 16/06/2011 a las 17:35