Página de mantenimiento en CakePhp

Página de mantenimiento en CakePhp

 

Si habeis desarrollado en profundidad con CakePhp, tal vez necesiteis ya establecer una página de mantenimiento u obras para cuando estéis trabajando.

El problema radica principalmente en que Cakephp siempre va a intentar renderizar por todos los medios posibles la vista solicitada, por ello lo que debes hacer, es manejarlo desde el APP_CONTROLLER con la función beforeFilter().

  1. Crea tu APP_CONTROLLER si no lo tienes ya en tu APP dir y define la función beforeFilter();
  2. Crea un layout de mantenimiento en /views/layouts/maintenance.ctp
  3. Crea un elemento de obras en /views/elements/maintenance.ctp
  4. En tu fichero /core/config.php crea la variable que controlará el estado. Configure::write('maintenace_mode',true);
  5. En tu función beforeFilter() de tu APP_CONTROLLER pega el siguiente código:
if (Configure::read('maintenance_mode') and !isset($this->params['admin'])){
    $this->layout = 'maintenance';
    $this->set('title_for_layout', __('Sitio web en mantenimiento', true));
    $this->render('../elements/maintenance');
}

Si estáis haciendo uso de Auth component podeis mirar si el usuario es administrador para evitar mostrarle el contenido de mantenimiento, de tal forma que el admin siempre pueda verlo todo.

if (Configure::read('maintenance_mode') and !isset($this->params['admin']) and $this->Auth->User('group') == 'admin'){
    $this->layout = 'maintenance';
    $this->set('title_for_layout', __('Sitio web en mantenimiento', true));
    $this->render('../elements/maintenance');
}

Comparte este artículo