Helpers 2/2 – Select Box
Continuando este tema que lo dejé para continuar viendo otras cosas, me gustaría seguir hablando y creando helpers que ayuden a las personas que no están usando algún framework que ya disponga de algo parecido como Symfony.
Ya habíamos visto en el artículo de introducción llamado Helpers – Funciones genéricas la idea de crear un helper para crear controles input para formularios, ya sean de tipo text, button, submit, checkbox, radio, etc. Hoy me gustaría tratar un helper un poco más complejo para los selects (combo box) ya que si no lo tenemos hay que ir creando componentes de tipo <select> cada vez que obtenemos los datos de la base de datos y suele resultar un poco cansador.
Definamos la base
Tomemos como base crear una función a la cual llamaremos select_helper() que tomará por argumento los datos necesarios para la creación del combo. En un principio necesitaremos los argumentos más principales como el name del componente y las opciones (<option>) que se desplegarán. Este último será tratado como un array asociativo en donde tendremos como clave el value de nuestros options, y como el valor de la clave el texto a mostrar por cada opción. Haciéndolo bien básico podríamos tener el siguiente código
function select_helper($name, $selectOptions)
{
//-- Cargaermos el texto HTML generado dentro de
// la variable $ret para finalmente hacer un return
$ret = '<select name="' . $name . '">';
//-- Por cada par (clave => valor) crearemos un <option]> que
// iremos concatenando a la variable $ret
foreach($selectOptions as $key => $value)
{
$ret .= '<option value="' . $key . '">' . $value . '</option>';
}
//-- Finamente concatenamos el cierre del combo
$ret .= '</select>';
//-- Retornamos el HTML para usarlo con un echo
return $ret;
}
//-- Esto lo podríamos utilizar así
//-- Creamos un array (lo podríamos haber obtenido de la base de datos
// por ejemplo de una tabla parametrica como por ejemplo lo explicado
// este artículo)
$paises = array(
'PY' => 'Paraguay',
'AR' => 'Argentina',
'UR' => 'Uruguay'
);
echo select_helper('pais', $paises);


