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

Radio Button con Zend Form

Estas en el tema de Radio Button con Zend Form en el foro de Zend en Foros del Web. Hola! A ver si pueden echarme una mano. Estoy desarrollando una aplicación basada en Zend Framework y me sucede lo siguiente : Genero mi form ...
  #1 (permalink)  
Antiguo 01/06/2010, 16:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 17 años, 2 meses
Puntos: 0
Radio Button con Zend Form

Hola!

A ver si pueden echarme una mano.

Estoy desarrollando una aplicación basada en Zend Framework y me sucede lo siguiente :

Genero mi form con Zend_Form, todo bien.

Algunos form, incluyen elementos tipo "Radio", con sus respectivas opciones. Hasta ahí todo bien.

Sin embargo, al capturar el valor del radio una vez enviado el form, siempre me dá el último valor dentro de las opciones agregadas, sin importar cual se haya marcado.

Por ejemplo :

$accion = new Zend_Form_Element_Radio('accion');
$accion->setLabel('¿Que desea hacer a continuación?')
->addMultiOption('1', 'Ingresar otro artículo relacionado a éste documento')
->addMultiOption('2', 'Ingresar otro artículo no relacionado a éste documento')
->addMultiOption('3', 'Volver al listado de ingresos')
->setRequired(true);


Y el valor lo capturo con $form->getValue('accion');

Siempre me devuelve la última opción del radio button (o sea, en este caso '3'), sin importar cual haya seleccionado.

Estoy haciendo algo mal?, me perdí de algo?... cualquier idea es bienvenida!

Estoy usando Zend Framework 1.10.5 (con el 1.10.4 también me sucedía).

Saludos!
  #2 (permalink)  
Antiguo 01/06/2010, 17:05
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años
Puntos: 2
Respuesta: Radio Button con Zend Form

Hola claudiosalazarb:

Te recoemdaria que hagas lo siguiente:

Código PHP:
 $accion = new Zend_Form_Element_Radio('accion');
$accion->setLabel('¿Que desea hacer a continuación?')
            -> 
addMultiOptions(array(
                    
'1'=>'Ingresar otro artículo relacionado a éste documento'
                 
'2'=>'Ingresar otro artículo no relacionado a éste documento'
                    
'3'=>'Volver al listado de ingresos'
             
))
             ->
setRequired(true); 
Asi debe de funcionar.

Saludos;
  #3 (permalink)  
Antiguo 01/06/2010, 19:30
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Radio Button con Zend Form

Gracias por responder, ya lo había hecho de esa forma y el resultado es el mismo.

Alguna otra idea???
  #4 (permalink)  
Antiguo 01/06/2010, 19:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Radio Button con Zend Form

Mmm muy raro, como procesas tu formulario en tu controller?

Saludos.
  #5 (permalink)  
Antiguo 01/06/2010, 20:30
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Radio Button con Zend Form

Si, es muy raro, porque los demás valores, ingresados ya sea campos tipo Text, Textarea, Select, etc, llegan sin problema.
  #6 (permalink)  
Antiguo 01/06/2010, 20:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Radio Button con Zend Form

Prueba hacer un var_dump($_POST) antes de llamar a isValid() o a getValues() para ver que datos llegan por POST desde tu formulario.

Saludos.
  #7 (permalink)  
Antiguo 01/06/2010, 21:36
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Radio Button con Zend Form

Si hago el var_dump($_POST) compruebo que efectivamente llega el valor 3, independiente de cuál seleccione (1,2 o 3) :(
  #8 (permalink)  
Antiguo 02/06/2010, 07:23
 
Fecha de Ingreso: abril-2010
Ubicación: Lima-Peru
Mensajes: 94
Antigüedad: 14 años
Puntos: 2
Respuesta: Radio Button con Zend Form

Hola:

Como tienes tu controlador, por ejemplo deberia de ser asi:

Código PHP:
public function indexAction()
    {
         
$this->view->title 'Titulo';
         
$form = new Form();
         
$this->view->form $form;
         if (
$this->_request->isPost()) {

            
$formData $this->_request->getPost();
            if (
$form->isValid($formData)) {
                     
$accion=$form->getValue('accion');
                    
var_dump($accion);
                }
         }

Ojala no puedas mostrar tu controlador por que lo he probado y me da el valor selecionado.

Saludos,
  #9 (permalink)  
Antiguo 02/06/2010, 08:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Radio Button con Zend Form

Si por POST te esta llegando el valor 3, entonces no es un problema ya de Zend Form si no algo en tu formulario que esta seteando el valor de tu radio antes de enviarlo a PHP.
  #10 (permalink)  
Antiguo 02/06/2010, 19:08
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Radio Button con Zend Form

Voy a simplificar algunas cosas para probar con lo mas básico y llegar a la solución por descarte, ya que hay harto javascript metido en la vista.

En cuanto sepa que es, les comento.

Saludos!!
  #11 (permalink)  
Antiguo 03/06/2010, 10:12
 
Fecha de Ingreso: febrero-2007
Mensajes: 35
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Radio Button con Zend Form (solucionado)

Bien, les cuento por si a alguien más le sucede.

El error era mío, a nivel de javascript.

Sucede que el envío del formulario se realiza vía ajax. La siguiente función la ocupaba para recolectar la información :

Código:
function getIDataForm() {
    formElements = $("form.ajax input:not(:button, :submit), form.ajax textarea, form.ajax select");
    var dataForm = "";
    formElements.each(function () {
        name = this.name;
        value = this.value;
        dataForm = dataForm+'&'+name+'='+value;
    });
    return dataForm;
}

Como resultado de esa función, siempre obtenía el último valor de los checkbox, ya que no verificaba cuál estaba seleccionado.

Finalmente, modifiqué esa función para que quede de la siguiente forma :

Código:
function getDataForm() {
    formElements = $("form.ajax input:text, form.ajax input:radio(:checked), form.ajax textarea, form.ajax select");
    var dataForm = "";
    formElements.each(function () {
        name = this.name;
        value = this.value;
        dataForm = dataForm+'&'+name+'='+value;
    });

    return dataForm;
}
De esa forma, ignora los radio button no seleccionados y envía el valor del seleccionado.

Saludos!!

Etiquetas: radio, formulario
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:00.