Llevo unos días impregnándome de la Zend Framework. Para practicar lo que aprendo, reviso el cms perpetuo que cada vez es más “profesional” (o eso me parece =). Esta tarde los multicheckbox me han retado a un pulso y casi vencen (por los pelos los mando a tomar por saco).
Trabajar con Zend es en general bastante sencillo, una vez sabes cómo (Santi creo que es un tanto escéptico con el tiempo invertido y el resultado obtenido =). En los últimos días intento aprender el funcionamiento de Zend_Form (la documentación no está del todo bien y se encuentran pocos tutoriales en la red). La cosa parecía casi dominada hasta que han aparecido los checkbox múltiples.
Crearlos es bastante sencillo:
$groups = new Zend_Form_Element_MultiCheckbox('groups');
foreach($groups as $group){
$groups -> addMultiOption($group -> id, $group -> name);
}
$form -> addElement($groups);
Y ya tenemos un listado de checkbox, con sus label y todo =) Lo complicado viene cuando lo que quieres es marcar alguno por defecto (o si quieres preparar un formulario de modificación y necesitas arrastrar las casillas marcadas en la BBDD). Zend_Form_Element_MultiCheckbox, a diferencia de Zend_Form_Element_Checkbox, ¡¡¡no ofrece la posibilidad de marcar un checkbox!!!
Después de buscar y preguntar he empezado a seguir la estructura de llamadas y clases hasta encontrar con la solución:
$form -> groups -> setValue($checkedGroups);
Donde $checkedGroups es un array con los ids que queremos marcar. Así de fácil y tonto, pero cuando no se sabe la respuesta, es lo que pasa. El nombre del método no ayudaba demasiado (en singular cuando se pasa un array y ¿¿setValue para indicar los marcados en lugar de los valores???) y el hecho de que se trate de la 6 o 7 clase de la jerarquía por encima de Zend_Form_Element_MultiCheckbox tampoco… =P
Nota: Vista la falta de documentación estoy pensando en preparar algo… a ver si tengo tiempo =/

Comentarios
Exceptico no… aunque sigue siendo más rápido crear gestores con mi cms :P :P :P
Ahora.. Zend es más elegante… y más exigente con el motor que lo mueve… pedir PHP5 con los ISP españoles es un poco utopía y si el cliente te viene que tiene su web en arsys pues ya puedes empezar a picar otro cms. (el mío ni en arsys se salva…)