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'
);
  1. $this->Rol->generateList(
  2. null,
  3. 'nombre_rol ASC',
  4. null,
  5. '{n}.Rol.id',
  6. '{n}.Rol.nombre_rol'
  7. );
  8. // Esto devolvería algo como:
  9. array(
  10. '1' => 'Head Honcho',
  11. '2' => 'Marketing',
  12. '3' => 'Department Head',
  13. '4' => 'Grunt'
  14. );

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.