Bueno la primera opción que ví fue la de utilizar la función find('list'), pero los resultados no fueron los más deseados. Buscando en los grupos de cake tratando de encontrar alguna sintaxis específica para esta función me encontré con otra solución, que aquí les dejo:
Actualización2. $foo = $this->Usuario->TipoUsuario->find('all');
3. $tipo_usuarios = Set::combine($foo, '{n}.TipoUsuario.id', '{n}.TipoUsuario.nombre');
4. //Si ese objeto tiene una relacion por ejemplo de $belongsTo con el modelo
5. //actual, por ejmplo Usuario con TipoUsuario podemos setear directamente
6. //la lista con la siguiente funcion
7. $this->set(compact('tipo_usuarios'));
Con el aporte que hizo José Lorenzo Rodrígues en sus comentarios la otra opción con la función find('list') quedaria así:
$this->Usuario->TipoUsuario->displayField = 'nombre';
$tipo_usuarios = $this->Usuario->TipoUsuario->find('list');
//Si ese objeto tiene una relacion por ejemplo de $belongsTo con el modelo
//actual, por ejmplo Usuario con TipoUsuario podemos setear directamente
//la lista con la siguiente funcion
$this->set(compact('tipo_usuarios'));
Saludos ...
4 comentarios:
Eso e innecesario si pones en tus modelos:
var $displayField = 'nombre';
o caulquiera sea el campo que deseas mostrar en tus selects... De esa manera lo invocas find('list') y listo!
José: gracias por el aporte nuevamente. De verdad colaborativamente se aprende mucho más rápido.
Saludos ...
El displayField también es innecesario si usamos "name" o "title" en lugar de "nombre".
Y aqui entramos en otro tema: ¿Usamos español o ingles para los nombres de campos?
josepzin: la verdad esa es otra de las convenciones de cake, pero en particular no me gusta crear una aplicación que siga todas las convenciones, porque puede hacerse predecible, lo que como lo dije ántes no me gusta. Por eso prefiero colocar aunque sea una o dos líneas de más. Agradecer que cake da la flexibilidad de cambiarlo.
Saludos ...
Publicar un comentario