Cuando una oferta de trabajo expira, ya no debe ser posible visualizar su información, aunque se conozca su URL. Prueba a acceder a la URL de la oferta de trabajo que hemos insertado como expirada (debes reemplazar el valor de la variable id
por el valor del id
de tu base de datos, que puedes obtener con la consulta SELECT id, token FROM jobeet_job WHERE expires_at < NOW()
):
/frontend_dev.php/job/sensio-labs/paris-france/ID/web-developer-expired
La aplicación no debería mostrar los detalles de la oferta de trabajo, sino que debería reenviar al usuario a una página de error 404. Pero, ¿cómo podemos hacerlo si la oferta de trabajo se obtiene automáticamente en la ruta?
Las rutas de tipo sfPropelRoute
utilizan por defecto el método doSelectOne()
para obtener un objeto, pero se puede utilizar otro método indicándolo en la opción method_for_criteria
de la configuración de la ruta:
# apps/frontend/config/routing.yml
job_show_user:
url: /job/:company_slug/:location_slug/:id/:position_slug
class: sfPropelRoute
options:
model: JobeetJob
type: object
method_for_criteria: doSelectActive
param: { module: job, action: show }
requirements:
id: \d+
sf_method: [GET]
El método doSelectActive()
recibe como argumento el objeto Criteria
construido por la ruta:
// lib/model/JobeetJobPeer.php
class JobeetJobPeer extends BaseJobeetJobPeer
{
static public function doSelectActive(Criteria $criteria)
{
$criteria->add(JobeetJobPeer::EXPIRES_AT, time(), Criteria::GREATER_THAN);
return self::doSelectOne($criteria);
}
// ...
}
Si intentas acceder ahora a la página de una oferta de trabajo expirada, serás redirigido a una página de error 404.