Foros del Web » Programando para Internet » PHP » Zend »

Problema con campos dinamicos con Zend_Form

Estas en el tema de Problema con campos dinamicos con Zend_Form en el foro de Zend en Foros del Web. Que tal, trabajando con ZF me he topado con el problema de que en un formulario tenogo que tener campos dinámicos de acuerdo a un ...
  #1 (permalink)  
Antiguo 10/04/2012, 12:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 14
Antigüedad: 12 años, 8 meses
Puntos: 0
Problema con campos dinamicos con Zend_Form

Que tal, trabajando con ZF me he topado con el problema de que en un formulario tenogo que tener campos dinámicos de acuerdo a un select que pueden o no necesitarse, estos campos los creo dinamicamente con ajax/jquery, el problema surge que cuando se manda el formulario estos campos creados dinamicamente no son validados y al regresar al formulario ya no aparecen se que es porque no "son parte" de la forma, es ahi donde surge mi duda de como resolver este problema . De antemano gracias!!
  #2 (permalink)  
Antiguo 10/04/2012, 14:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con campos dinamicos con Zend_Form

Lamentablemente Zend_Form no tiene esa facilidad, vas a tener que usar los componentes por separado, en el servidor usar Zend_Validate y en el view los form view helpers para crear tu forma un ejemplo puede ser:

Código PHP:
Ver original
  1. public function fooAction()
  2. {
  3.     if ($this->getRequest()->isPost()) {
  4.         $aPostedVars = $this->getRequest()->getPost();
  5.         $Validator = new Zend_Validate_Alpha();
  6.         $aFields = $aPostedVars['multiple'];
  7.         $bHasErrors = false;
  8.         foreach ($aFields as $sNum => $sFieldValue) {
  9.             if (!$Validator->isValid($sFieldValue)) {
  10.                 $aErrors[$sNum] = $Validator->
  11.                 $bHasErrors = true;
  12.             }
  13.         }
  14.        
  15.         if ($bHasErrors) {
  16.             $this->view->errors = $aErrors;
  17.             $this->view->field_values = $aPostedVars['multiple'];
  18.             $this->view->field_count = count($aPostedVars['multiple']);
  19.         } else {
  20.             // Form Valid!
  21.         }
  22.     } else {
  23.         $this->view->field_count = 1;
  24.         $this->view->field_values = array(0 => '');
  25.     }
  26. }
  27.  
  28. // foo.phtml
  29. <?php echo $this->form('test'); ?>
  30.     <?php for($i = 0; $i < $this->field_count; $i++) { ?>
  31.         Input #<?php echo $i; ?>: <?php echo $this->formText('multiple[]', $this->field_values[$i]); ?>
  32.     <?php } ?>
  33. </form>

Así mantienes la persistencia tanto en el cliente como en el servidor, aunque como te digo tienes que hacerlo de una forma más manual ya que Zend_Form por sí solo no tiene ese soporte.

Saludos.
  #3 (permalink)  
Antiguo 10/04/2012, 15:35
 
Fecha de Ingreso: agosto-2011
Mensajes: 14
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Problema con campos dinamicos con Zend_Form

Ohh que mal, una duda, se puede obtener la forma de esta manera en el view
Código PHP:
$this->form('test'
tal como comentas en tu ejemplo??? y de ahí tomar los parámetros enviados en la forma para volver a "crear" los campos que son dinámicos?
  #4 (permalink)  
Antiguo 10/04/2012, 15:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema con campos dinamicos con Zend_Form

Al hacer $this->form('test') lo que haces es crear el tag <form>. Sí quieres obtener el form como tal, tienes que pasarlo a la vista desde el controller.

Saludos.
  #5 (permalink)  
Antiguo 12/04/2012, 17:44
 
Fecha de Ingreso: agosto-2011
Mensajes: 14
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Problema con campos dinamicos con Zend_Form

Gracias por la ayuda, al final si termine haciendo algo parecido a lo que comentaste y pues como dices lo tuve que hacer deforma muy manual eso no me agrado mucho pero en fin. Saludos y gracias

Etiquetas: zend-framework, zend-form
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:24.