Problemas con find('list') y generateList deprecado en CakePHP 1.2

La verdad a la hora de crear un arreglo de opciones para una lista (select en HTML) tuve problemas ya que en la versión 1.2 de CakePHP la función generateList está deprecada. 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:
$foo = $this->Usuario->TipoUsuario->find('all');
$tipo_usuarios = Set::combine($foo, '{n}.TipoUsuario.id', '{n}.TipoUsuario.nombre');
//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’));
Actualización 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 ...
Sin votos aún

José Lorenzo Rodríguez (no verificado) on June 02nd 2008

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!

Danilo Domínguez P. (no verificado) on June 02nd 2008

José: gracias por el aporte nuevamente. De verdad colaborativamente se aprende mucho más rápido.Saludos ...

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato

CAPTCHA
Esta pregunta es para probar si tu eres un humano y para prevenir spam en el sitio.
1 + 7 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.