2011-02-22 24 views
5

Hola El problema con Zend_Form_Element_Checkbox es que cuando se renderiza crea un campo de entrada oculto con el mismo nombre que la casilla de verificación real. Así que veamos el código:Zend framework Casilla de verificación problema

Éste es cómo crear el elemento interior formulario:

$onlineCheckbox = $this->createElement('checkbox', 'online_checkbox', array(
     'label'=>'Online:', 
     'uncheckedValue'=> '0', 
     'checkedValue' => '1' 
    )); 

Y esta es la salida HTML se parece a:

<input type="hidden" name="online_checkbox" value="0" /><input type="checkbox" name="online_checkbox" id="online_checkbox" value="1" /> 

Ahora el problema es que en el otro navegadores y luego Firefox obtengo los resultados necesarios por correo (si está desactivado '0', si marcado '1') pero en Firefox para ambos casos obtengo '0', sé que esto se debe a ese campo oculto. Busqué en Google y parece que este problema no está resuelto. Así que mi pregunta es cómo otros pueden manejar esto, o puede haber una solución para que esto funcione en Firefox. Cualquier ayuda será apreciada. Gracias de antemano.

EDITAR: Gracias a @Marcin: creo que el problema está en mis decoradores. En Firebug obtengo una salida desordenada, creo que si los arreglaré correctamente, funcionará, una vez más gracias a @Marcin por señalar!

+1

@Centurion. ¿podría proporcionar más detalles, ya que acabo de comprobar su fragmento y parece funcionar en Firefox (obtengo, si no se selecciona '0', si marcado '1'). – Marcin

+0

@Marcin, cuando lo pruebo con html simple, funciona, pero cuando lo genero con zend, no lo es. Has probado con un zend? – Centurion

+1

@Centurion. Añadí tu $ onlineCheckbox a uno de mis Zend_Forms, y después del envío usé $ mainForm-> getValue ('online_checkbox'); para obtener el valor de la casilla de verificación. Se comporta como se esperaba. – Marcin

Respuesta

1

Es necesario utilizar un IdenticalValidator como solución para este problema:

->addValidator('Identical', false, '1'); 
2

Es probable que tenga un Dojo forma activada. Zend_Dojo_View_Helper_CheckBox representa un elemento oculto y el elemento de formulario. Puede especificar la casilla de verificación viejo y simple de este modo:

$onlineCheckbox = new Zend_Form_Element_CheckBox('online_checkbox', array(
    'label'=>'Online:', 
    'uncheckedValue'=> '0', //can be removed, this is the default functionality 
    'checkedValue' => '1', //can be removed, this is the default functionality 
)); 

Esta voluntad por Zend_Form :: pase createElement() 's plug-in cargador.

Happy Hacking!

+0

Gracias, intentaremos la próxima vez;) – Centurion

Cuestiones relacionadas