Crear un panel de administración con layout personalizado con CakePHP

¿Quieres un panel de administración separado en tu aplicación CakePHP? Para crear uno necesitaremos editar algunos ficheros y crear algunos nuevos. También crearemos un theme para el panel de administración, y lo utilizaremos cuando entremos como administradores.

Usaremos CakePHP 2.x para este tutorial.

1. Edita /app/Config/core.php

1
2
3
4
Encuentra:
Configure::write('Routing.prefixes', array('admin'));
Añadimos el prefijo admin y lo descomentamos.

2.  Crea un layout para admin

– ve a /app/View/Layouts
– haz una copia de default.ctp y renómbrala como admin.ctp

3. Edita el layout admin.ctp

– haz las modificaciones necesarias al layout

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Ejemplo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
    <?php echo $this->Html->charset(); ?>
    <title>Administrator | <?php echo $title_for_layout; ?></title>
    <?php
        echo $this->fetch('meta');
        echo $this->Html->css(array('admin'));
        echo $this->fetch('css');
        echo $this->fetch('script');
    ?>
</head>
<body>
    <div id="container">
        <div id="header">
            <div class="logo"></div>
            <div class="clear"></div>
        </div>
        <div id="content-wrapper">
            <?php echo $this->fetch('content'); ?>
        </div>
        <div id="footer">
            © <?php echo date("Y");?> - All rights         
    </div>
             <?php echo $this->element('sql_dump'); ?>   
    </div>
</body>
</html>

4. Crea la hoja de estilos admin.css

– /app/webroot/css/admin.css
– añade los estilos que desees

5. Edita AppController.php

– Añade la comprobación de prefijo en tu función beforeFilter para cargar tu layout admin

1
2
3
4
5
public function beforeFilter() {
    if ((isset($this->params['prefix']) && ($this->params['prefix'] == 'admin'))) {
        $this->layout = 'admin';
    }
}

6. Edit UsersController.php

– We need to tell UsersController that it needs to run the beforeFilter from AppController (remember to put this in all your controllers).

1
2
3
4
public function beforeFilter() {   
    parent::beforeFilter();
    // Controller spesific beforeFilter
}

– Crea una función de administración:

1
2
3
4
public function admin_dashboard() {
        $title_for_layout = 'Dashbord';
        $this->set(compact('title_for_layout'));
    }

– Crea la vista para la función (/app/Views/Users/admin_dashboard.ctp)

1
2
<h1>Dashboard</h1>
<p>Bienvenido al Panel de Administración</p>

7. Apunta el navegador a la localización de tu admin
– Si tienes funciones de login y Auth en juego, intenta establecer los permisos de autentificación a * en UsersController.php

1
$this->Auth->allow('*');

– Ve a: your-domain.com/admin/users/dashboard
– Tu nuevo layout de administración debería renderizarse ahora, y deberías ver el mensaje “Bienvenido al Panel de Administración”.

8. Crea más funciones + Controllers + Views + Models
– Recuerda poner admin_ en todas las funciones/views de administración
– Cuando se usa el prefijo “admin_”, se renderizará el layout admin.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s