Cakephp: Radiobutton en formulario
Posted by | Posted in CakePHP, php | Posted on 16-02-2010
2
Pues hoy he necesitado crear unos radiobuttons dentro de un formulario. Este formulario se llama una y otra vez porque su objetivo es el hacer que el usuario conteste una pregunta y si acierta, que conteste otra.
En un principio mi código era el siguiente:
create('User', array('action' => 'index/'.$id));
$contents .= $form->radio('Respuesta',
array('1'=>$answer1, '2'=>$answer2, '3'=>$answer3));
$contents .= $form->end('Enviar info');
echo $contents;
?>
Pero esto me generó un problema: por alguna extraña razón me mantenía el valor de la pregunta anterior en el formulario. Es decir, si había marcado la 3ª respuesta como válida en la primera pregunta, pulsaba el botón de enviar la información y en la segunda pregunta me mapeaba esa 3ª respuesta.
Buscando por foros encontré una solución que no me valió, la de añadir un default (quizás hay alguien que lo haya podido desentrañar)
En mi caso, y como lo resolví fue agregando array(‘value’=>’0′) en la creación del radiobutton. De esta forma el código queda así:
create('User', array('action' => 'index/'.$id));
$contents .= $form->radio('Respuesta',
array('1'=>$answer1, '2'=>$answer2, '3'=>$answer3), array('value'=>'0'));
$contents .= $form->end('Enviar info');
echo $contents;
?>


Ese comportamiento es totalmente normal. Cuando haces un ‘submit’ los datos se guardan en $this->data, y el FormHelper de CakePHP usa automáticamente los valores de esa variable para informar los campos del formulario.
Esto es útil para los formularios de edición, de forma que puedes usar la misma vista tanto para agregar como editar. Tan solo tienes que cargar los datos en $this->data en el controlador y cargar la vista.
La opción ‘default’ se usa para seleccionar por defecto otra opción que no sea la primera en caso de que $this->data esté vacío.
Muchas gracias por la aclaración, me ha desvelado las incógnitas que tenía sobre el problema!!!! Gracias!