Supongamos que se debe tener 'datos conocidos' de una tabla, algo así como en una tabla llamada 'sexo' y los campos son 'Masculino' y 'Femenino', pero todavía no tenemos la tabla. Se puede implementar 'mientras tanto' un campo de tipo enum[1] con esos datos.
Ahora, supongamos que tenemos dos o mas tablas y queremos traer datos de ellas para luego mostrarlos en una lista desplegable, entonces podemos hacer lo siguiente:
En el controlador se define una función llamada addEnums que toma como parámetros el nombre del campo de la tabla y el modelo que se va a usar:
public function addEnums($name, $modelo){
$this->loadModel($modelo);
$type = $this->$modelo->getColumnType($name);
preg_match_all("/'(.*?)'/", $type, $enums);
foreach ($enums[1] as $n){
$data[$n]=$n;
}
$this->set($name, $data);
}
Luego, en el mismo controlador, se llama de la siguiente forma (tengo dos tablas, Users y Players. Users tiene un campo que se llama 'sex' y Player un campo que se llama 'position'):
$this->addEnums('sex','User');
$this->addEnums('position', 'Player');
Y luego, en la vista, se muestran de la siguiente forma:
echo $this->Form->input('sex', array('options'=>$sex));
echo $this->Form->input('position', array('options'=>$position));
Y listo!
[1] http://dev.mysql.com/doc/refman/5.0/en/enum.html
No hay comentarios:
Publicar un comentario