3.7.3.7 generateList
generateList(string $condiciones, string $orden, int $limite, string $rutaClave, string $rutaValor)
generateList está obsoleto y reemplazado por find('list'), o find('all') combinado con una llamada a Set::combine().
Esta función es un atajo para obtener una lista de pares clave/valor, especialmente útil para crear una etiqueta select en HTML a partir de una lista de tus modelos. Usa los parámetros $condiciones, $orden y $limite tal y como lo harías con una llamada a findAll().
Si se le han dado valores en el modelo a $primaryKey y $displayField, no necesitas suministrar los dos últimos parámetros, ya que funcionan como $keyPath y $keyValue respectivamente.
Adicionalmente, si ni $keyPath ni $displayField han sido suministrados, CakePHP intentará cargar la información usando 'title' o 'name'.
$keyPath y $valuePath especifican dónde encontrar las claves y valores para nuestra lista generada. Por ejemplo, si quieres generar una lista de roles basados en tu modelo Rol, con clave el entero 'ids', la llamada completa sería algo parecido a:
$this->Rol->generateList(
null,
'nombre_rol ASC',
null,
'{n}.Rol.id',
'{n}.Rol.nombre_rol'
);
// Esto devolvería algo como:
array(
'1' => 'Head Honcho',
'2' => 'Marketing',
'3' => 'Department Head',
'4' => 'Grunt'
);
$this->Rol->generateList(null,'nombre_rol ASC',null,'{n}.Rol.id','{n}.Rol.nombre_rol');// Esto devolvería algo como:array('1' => 'Head Honcho','2' => 'Marketing','3' => 'Department Head','4' => 'Grunt');
A mucha gente le desconcierta la sintaxis '{n}' utilizada por generateList(). No te preocupes, sirve como marcador para cambiar entre DataSources (orígenes de datos) del modelo, tratado más adelante en este capítulo.
