El tutorial Jobeet

6.9. Archivos de datos dinámicos

Ahora mismo, salvo que la opción max_jobs_on_homepage valga 1, no vas a notar ninguna diferencia en el listado de ofertas de trabajo de la portada. Lo que necesitamos es crear muchas ofertas de trabajo de pruebas en el archivo de datos. Si crees que debes copiar y pegar 20 veces una oferta de trabajo y después cambiar algunos datos, estás equivocado. Copiar y pegar siempre es una mala solución, incluso en los archivos de datos.

Una de las ventajas de los archivos YAML de Symfony es que pueden contener código PHP que se evalúa antes de procesar el archivo. Abre el archivo de datos 020_jobs.yml y añade el siguiente código al final del todo:

JobeetJob:
# Starts at the beginning of the line (no whitespace before)
<?php for ($i = 100; $i <= 130; $i++): ?>
  job_<?php echo $i ?>:
    category_id:  programming
    company:      Company <?php echo $i."\n" ?>
    position:     Web Developer
    location:     Paris, France
    description:  Lorem ipsum dolor sit amet, consectetur adipisicing elit.
    how_to_apply: |
      Send your resume to lorem.ipsum [at] company_<?php echo $i ?>.sit
    is_public:    true
    is_activated: true
    token:        job_<?php echo $i."\n" ?>
    email:        [email protected]

<?php endfor; ?>

Como siempre que se trabaja con archivos YAML, debes tener mucho cuidado con la tabulación de la información. Cuando añadas código PHP a un archivo YAML, ten en cuenta estos trucos sencillos:

  • Las sentencias <?php ?> siempre deben empezar una línea o ser parte de un valor.
  • Si la sentencia <?php ?> finaliza la línea, se debe incluir explícitamente un carácter de nueva línea (\n).

Ahora ya puedes volver a cargar los archivos de datos mediante la tarea propel:data-load para comprobar si en la categoría Programming de la portada solamente se muestran 10 ofertas de trabajo. En la siguiente imagen hemos cambiado el número máximo de ofertas de trabajo a 5 para que la imagen no sea demasiado grande:

Paginación en los listados de portada

Figura 6.3 Paginación en los listados de portada