Ver índice de contenidos del libro

6.8. Limitando los resultados

Un último requerimiento del listado de ofertas de trabajo de la portada es el siguiente: "para cada categoría sólo se muestran las primeras diez ofertas y el resto se pueden visualizar pulsando sobre el enlace disponible".

Limitar el número de resultados es muy sencillo, por lo que sólo debes modificar el código del método getActiveJobs() de la siguiente forma:

// lib/model/JobeetCategory.php
public function getActiveJobs($max = 10)
{
  $criteria = new Criteria();
  $criteria->add(JobeetJobPeer::CATEGORY_ID, $this->getId());
  $criteria->setLimit($max);
 
  return JobeetJobPeer::getActiveJobs($criteria);
}

El límite de la condición LIMIT se ha establecido en la propia clase del modelo, pero sería mucho mejor que ese valor fuera configurable. Por tanto, modifica la plantilla para pasar a este método el máximo número de ofertas de trabajo que se obtiene del archivo de configuración app.yml:

<!-- apps/frontend/modules/job/templates/indexSuccess.php -->
<?php foreach ($category->getActiveJobs(sfConfig::get('app_max_jobs_on_homepage')) as $i => $job): ?>

Para que el código anterior funcione, no te olvides de añadir la opción de configuración en el archivo app.yml:

all:
  active_days:          30
  max_jobs_on_homepage: 10
Portada organizada por categorías

Figura 6.2 Portada organizada por categorías