Primeros pasos en CakePHP

Dificultad: Fácil
Tiempo de Lectura: 5 minutos

Si deseas saber como empezar a programar en  Cakephp, antes que nada debemos conocer como funciona Cakephp, el proceso de instalación, cuales son sus principales carpetas, etc. Este framework orientado a objetos funciona bajo la metodología de MVC – Modelo, Vista y Controlador. Conozcamos un poco de que podemos hacer en cada nivel de nuestro MVC.

 

Modelo

 

En resumen un Modelo en Cakephp es una tabla de nuestra base de datos, por ejemplo si tenemos una tabla llamada «usuarios» nuestro modelo en Cakephp se llamara «Usuario».

La regla simple de Cakephp es que nuestros nombres de tablas estén en plural y nuestros nombres de modelos por defecto estarán en singular. De la misma forma en los modelos se definen las relaciones con otras tablas «Modelos», como también se colocan las validaciones de los campos de nuestras tablas.

 

Vista

 

Son nuestras pantallas, formulario, plantillas de nuestro sistema. En resumen son parte de código que sera organizado y mostrado con el llamado de un controlador.

 

Controlador

 

El controlador se utiliza para manejar las funciones de nuestro sistema es el encargado de conectar nuestros «Modelos» con nuestras «Vistas» otra forma de llamarlo es nuestra capa de negocios y decisiones.

 

Estructura de Carpetas de Cakephp

 

andres@localhost cakephp-cakephp-b47d357$ tree
.
|-- app
| |-- Config = Carpeta de la configuración de nuestro Cakephp
| | |-- core.php = Archivo de Configuración de Cakephp
| | |-- database.php.default = Archivo base para crear nuestro database.php
| | |-- routes.php = Definir rutas en nuestra app
| | |-- Schema
| |-- Console = Consola de Cakephp para generar codigo automaticamente
| | |-- cake
| |-- Controller = Carpeta en donde estaran organizados nuestros controladores
| | |-- AppController.php
| |-- index.php
| |-- Lib = Carpeta para instalar Librerias de terceros
| |-- Locale = Carpeta para organizar los idiomas de nuestra app
| |-- Model = Carpeta para organizar nuestros Modelos
| | |-- AppModel.php
| |-- Plugin = Carpeta para colocar Plugin desarrollados para Cakephp
| |-- tmp = Carpeta en donde Cakephp guarda archivos temporales, Logs, Cache
| | |-- cache
| | | |-- models
| | | |-- persistent
| | | `-- views
| | |-- logs
| | | `-- empty
| | |-- sessions
| | | `-- empty
| | `-- tests
| | `-- empty
| |-- Vendor = Carpeta para guardar tambien librerias
| | `-- empty
| |-- View = Carpeta en donde se guardaran el orden de nuestras Vistas
| | |-- Elements
| | |-- Emails
| | |-- Errors
| | | |-- error400.ctp
| | | `-- error500.ctp
| | |-- Helper
| | |-- Layouts
| | | |-- ajax.ctp
| | | |-- default.ctp
| | | |-- Emails
| | | | |-- html
| | | | | `-- default.ctp
| | | | `-- text
| | | | `-- default.ctp
| | | |-- error.ctp
| | | |-- flash.ctp
| | | |-- js
| | | | `-- default.ctp
| | | |-- rss
| | | | `-- default.ctp
| | | `-- xml
| | | `-- default.ctp
| | |-- Pages
| | | `-- home.ctp
| | `-- Scaffolds
| | `-- empty
| `-- webroot = Carpeta en donde estaran ubicados nuestros archivos estaticos
| |-- css
| |-- favicon.ico
| |-- files
| | `-- empty
| |-- img
| |-- index.php
| |-- js
| | `-- empty

 

Instalación de Cakephp

 

En esta caso vamos a colocar los paso para la instalación de Cakephp en un ambiente de prueba con Nginx + PHP-FPM y Mysql

1. Descargamos de la web oficial que es http://cakephp.org/

2. Descomprimimos la carpeta

3. Renombramos la carpeta y le colocamos el nombre de nuestro proyecto en nuestro caso «bloginfra»

4. Colocamos la carpeta en una ruta de nuestro servidor web (Apache o Nginx)

5. Llamamos la ruta vía explorador web en nuestro caso es «http://192.168.56.113/bloginfra/» porque esta en una maquina virtual pero lo comun seria «http://127.0.0.1/bloginfra/»

Instalar Cakephp

6. Como vemos en nuestra captura de pantalla nos dice varias notificaciones que debemos hacer

Please change the value of ‘Security.salt’ in APP/Config/core.php :
Please change the value of ‘Security.cipherSeed’ in APP/Config/core.php :

Nos solicita cambiar los valores de estas variables Security.salt y

Security.cipherSeed que se encuentran en nuestro archivo core.php en la ruta Config/core.php esta variable se debe cambiar por medidas de seguridad agregando más letras y numeros. Se utiliza en la generación única de hash de contraseñas y de sesiones.

Your database configuration file is NOT present.
Rename APP/Config/database.php.default to APP/Config/database.php

En este caso nos solicita crear el archivo de configuración de nuestra base de datos en la ruta Config/database.php

7. Primero Creamos una base de datos en nuestra Mysql llamada bloginfra

8. Creamos nuestro archivo de configuración en Config/database.php

[root@localhost bloginfra]# pwd
/home/www/bloginfra
[root@localhost bloginfra]# ls
app build.properties build.xml composer.json CONTRIBUTING.md index.php lib plugins README.md vendors
[root@localhost bloginfra]# cd app/
[root@localhost app]# ls
Config Console Controller index.php Lib Locale Model Plugin Test tmp Vendor View webroot
[root@localhost app]# cd Config/
[root@localhost Config]# ls
acl.ini.php acl.php bootstrap.php core.php database.php.default email.php.default routes.php Schema
[root@localhost Config]# cp database.php.default database.php
[root@localhost Config]# nano database.php

9. Información del archivo Config/database.php

<?php
/**
*
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package app.Config
* @since CakePHP(tm) v 0.2.9
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/

class DATABASE_CONFIG {

public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'CLAVEMYSQL',
'database' => 'bloginfra',
'prefix' => '',
'encoding' => 'utf8',
);

}

10. Ahora podemos ver nuevamente en nuestro explorador y nos mostrara esto:

Instalación de Cakephp

11. Rewrite en Cakephp : este es el punto en donde la mayoría nos quedamos estancados en la instalación, esto solo significa que debemos activar las reglas para reescribir url, aqui dejo los ejemplos para apache2 y nginx

URL rewriting is not properly configured on your server.

Apache2

En el archivo /etc/apache2/sites-available/default de nuestra carpeta colocar esto

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order Allow,Deny
Allow from all
</Directory>

Y verificar que el mod_rewrite este activo en nuestro servidor

Nginx

Agregar en tu archivo virtual host

location /bloginfra {

if (!-e $request_filename) {
rewrite ^/bloginfra(.+)$ /bloginfra/app/webroot/$1 last;
break;
}
}

El archivo completo quedaria

server {
listen 80;
server_name 192.168.56.113;
root /home/www/;
index index.php index.html index.htm;
access_log /var/log/nginx/test.access.log;
error_log /var/log/nginx/test.error.log;

location / {
index index.php;
}

location /bloginfra {

if (!-e $request_filename) {
rewrite ^/bloginfra(.+)$ /bloginfra/app/webroot/$1 last;
break;
}
}

location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/$fastcgi_script_name;
}
}

 

Con esto podemos ver que la instalación se realizo con éxito.

Instalación de Cakephp

 

Por favor avísanos si hay algún detalle que no esté claro o si tienes alguna duda sobre este procedimiento. Puedes dejarnos un comentario aquí debajo y en breve te daremos una respuesta.

Cuéntanos: ¿Pudiste instalar Cakephp en tu ambiente de prueba?


¿Te resultó útil el artículo? Compártelo con tus colegas: