cake php parte 1

17
2010 David Antonio González Blanchard [email protected] COMO EMPEZAR A COCINAR CON CAKE PHP PARTE 1

Upload: daviddagb2

Post on 19-Jun-2015

2.157 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Cake Php Parte 1

2010

David Antonio González Blanchard

[email protected]

COMO EMPEZAR A COCINAR CON CAKE PHP

PARTE 1

Page 2: Cake Php Parte 1

Contenido Introducción .................................................................................................................................. 3

Modelo de CakePHP....................................................................................................................... 4

Instalación .................................................................................................................................... 5

La estructura completa .............................................................................................................. 6

Configuración de Apache y mod_rewrite .............................................................................. 7

Crear una aplicación fácil ............................................................................................................. 11

Como se usa un Modelo ............................................................................................................... 13

Como se usa unControlador ......................................................................................................... 14

Como se usa una Vista ................................................................................................................. 15

ESTA HISTORIA CONTINUARA… .................................................................................................... 17

Page 3: Cake Php Parte 1

Introducción

Cake php es un framework o marco de trabajo para php parecido a otro

framework llamado rubí on rails y también se parece a zend framework.

Espero que con este pequeño tutorial aprenda por lo menos como utilizar

este framework.

A mí me costó bastante poder entender la estructura de este framework y

cómo funcionaba, pero con lo que he estudiado logre crear una pequeña

página.

Como es un framework para php eso quiere decir que es utilizado para

aplicaciones web, aunque su eslogan dice: “CakePHP: the rapid development

php framework”, es un poco complicado si no se conoce su estructura.

Pienso que los frameworks son muy útiles pero son bastante complicados y el

primer framework con el que me he topado ha sido cake php.

Page 4: Cake Php Parte 1

Modelo de CakePHP

Cake php utiliza el modelo vista control que es un patrón de diseño bien

estructurado y bastante conocido y utilizado. Ayuda a separar lógicamente el

código haciéndolo reusable, mantenible y generalmente mejor que otros.

En términos de Cake php, El modelo representa una base de datos, tabla o

registro, así como sus relaciones con otras tablas o registros. Los modelos

tienen las reglas de validación de los datos. Estas se aplican cuando se

insertan o actualizan datos.

Las vistas en cake están representadas por los archivos “view”, los cuales son

archivos de HTML, php o ctp. Las vistas son los formularios web que se

presentan cuando se acceda a la aplicación web.

Los controladores de Cake php manejan las peticiones del servidor. Toma las entradas del usuario (URL y datos de POST), aplica la lógica de negocios, utiliza los modelos para leer y escribir en base de datos y otras rutas, y manda la salida apropiada de datos con los archivos de vistas. Son como las reglas del negocio. En otras palabras con php normal sin el framework se trabaja así:

Página php

Cliente Base de datos

1. 2.

3. 4.

Page 5: Cake Php Parte 1

Con cake php las cosas se hacen:

Instalación

Básicamente no se requiere mucho para instalar cake php solo se requiere de

un servidor web como apache, puedes utilizar xamp para esto ya que trae

interprete de php, mysql, filezilla, perl, etc.

Luego de instalar apache hay que bajar el framework, generalmente viene en un paquete .rar o .tar.gz, etc. Viene comprimido. Puede bajarse de la página: http://www.cakephp.org. Se descomprime en la carpeta C:\xampp\htdocs o en la carpeta de los documentos de su servidor web. Sugiero crear la base de datos en my sql antes de iniciar con la configuración. Pero esto es opcional.

Cliente

Enrutador

Controlador

Modelo Base de datos

Vista

1.

2.

3.

4.

5.

6.

7

3.

8.

Page 6: Cake Php Parte 1

Puede quedar algo así:

Como puede observarse dentro de la carpeta del framework se pueden observar las carpetas app, cake, plugins, vendor y los otros archivos.

La estructura completa

/app

/config - Contiene archivos de configuración de la base de datos, ACL, etc.

/controllers - Los controladores van aquí /components - Los componentes van aquí /index.php - Le permite desplegar cake con /app como DocumentRoot /models - Los modelos van aquí /plugins - Los Plugins van aquí /tmp - Usado para cache y logs /vendors - Contiene las bibliotecas de terceros para esta aplicación /views - Las vistas van aquí

/elements - Los elementos (pequeñas partes de vistas) van aquí /errors - Sus errores personalizados van aquí /helpers - Los helpers van aquí

Page 7: Cake Php Parte 1

/layouts - Los layout de la aplicación van aquí /pages - Las vistas estáticas van aquí.

/webroot - El documentroot de su aplicación /css /files /img /js

/cake - Bibliotecas base de Cake. No edite ningún archivo aquí. index.php /vendors - Utilizado para las bibliotecas de terceros para todo el servidor. VERSION.txt - Aquí se ve la versión que se está utilizando.

Configuración de Apache y mod_rewrite

Para que cake php funcione se debe de configurar lo siguiente en su servidor

apache.

Asegúrese que la sobreescritura de .htaccess está permitida: en su httpd.conf, usted debe de tener una sección que define otra sección por cada carpeta en su sistema. En nuestro caso nos iremos a C:\xampp\apache\conf\httpd.conf

Asegúrese de que la carpeta correcta tiene asignado AllowOverride en All.

Page 8: Cake Php Parte 1

Si no está cámbielo. También hay que cambiar nuestro directorio web por el

de cake, esto hará que todo nuestro sitio web sea una sola aplicación cake

php, hay otras formas de configurarlo pero por cuestiones de ejemplo solo lo

haremos de esta manera. (Para mayor información consultar el manual oficial

de la página de cake php en http://www.cakephp.org.)

Y también aquí:

Asegúrese de que se está cargando mod_rewrite correctamente Debería de ver algo como LoadModule rewrite_module libexec/httpd/mod_rewrite.so y AddModule mod_rewrite.c en su httpd.conf.

Después de allí guardamos, podemos hacer un respaldo del archivo

C:\xampp\apache\conf\httpd.conf por cuestiones de respaldo pero esto es

opcional.

Ahora probamos abriendo nuestro navegador como firefox, internet

Explorer, opera, google crome, etc. y en la barra de direcciones ponemos

http://localhost/ y veremos que sale la pagina de cake php.

Page 9: Cake Php Parte 1

Nos aparecerá algo así:

Ahora hay que configurar algunas cosas para que podamos empezar a crear

nuestra aplicación web.

Vamos a cambiar security.salt para que pueda funcionar. Nos vamos a

app/config/core.php en la línea 212 allí hay una línea que dice

Configure::write('Security.salt','DYhG93b0qyJfIxfs2guVoUubWwvniR2G0Fga9

mi'); esto es por cuestiones de seguridad de sesiones, le cambiamos por otro

valor, puede ser el que uno quiera pero debe de ser único y puede tener

hasta 40 caracteres yo le puse daviddagbx pero puede ser otra cosa.

Cuando esto está hecho, hay que configurar la base de datos, para ello nos

vamos a app/config/database.php.default, lo copiamos y a esta copia le

quitamos el .default y la llamamos: “database.php”

Page 10: Cake Php Parte 1

Abrimos este archivo. (Puedes utilizar programas como SharePoint,

dreamweaver u otro editor web, yo utilizo expression web, aunque también

está el bloc de notas). Dentro de esto observamos unas configuraciones que

son para la conexión con la base de datos. Allí lo cambiamos con nuestros

datos como por ejemplo:

class DATABASE_CONFIG {

var $default = array( 'driver' => 'mysql', //driver del servidor de datos 'persistent' => false, //esto lo dejamos así 'host' => 'localhost', //el host donde está ubicado 'login' => 'david', //el login del servidor 'password' => 'david', //la clave del servidor 'database' => 'restaurante', //el nombre de la base de datos 'prefix' => '', ); var $test = array( 'driver' => 'mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'david', 'password' => 'david', 'database' => 'restaurante', 'prefix' => '', ); } Ahora podemos probar otra vez abriendo nuestro navegador y escribiendo http://localhost/ y vemos que todas las configuraciones están bien.

Page 11: Cake Php Parte 1

Crear una aplicación fácil

Para comenzar con este ejemplo sencillo empezamos creando una página

principal en \app\views\pages, allí creamos una archivo llamado home.ctp

Este llevara lo siguiente:

<head> <style type="text/css"> .style3 { text-align: center; } .style4 { text-align: left; } .style5 { border-style: solid; border-width: 1px; text-align: center; color: #FFFFFF; background-color: #000000; }

Page 12: Cake Php Parte 1

.style6 { border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; } .style7 { border-top-style: solid; border-top-width: 1px; text-align: center; } .style8 { border-top-style: solid; border-top-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; text-align: center; } </style> </head> <div> <div class="style3"> <form action="" method="post"> <h3>SISTEMA DE GESTION DE RESTAURANTE</h3><hr /></form> <div class="style4"><br>AREAS DEL SISTEMA<br><br> <table class="style6"> <tbody> <tr><td class="style5" style="width: 266px">AREA DE RECEPCION</td> <td class="style5" style="width: 332px">AREA DE COCINA</td> <td class="style5" style="width: 355px">AREA DE CAJA</td></tr> <tr><td class="style8" style="width: 266px"><a href="http://localhost/clientes">CLIENTES</a></td> <td class="style8" style="width: 332px">SUMINISTROS</td> <td class="style8" style="width: 355px">PEDIDOS</td></tr> <tr><td class="style8" style="width: 266px">MESAS</td> <td class="style8" style="width: 332px">CONSUMSIONES</td> <td class="style8" style="width: 355px">FACTURACION</td></tr> <tr><td class="style7" style="width: 266px">RESERVACIONES</td> <td class="style7" style="width: 332px">&nbsp;</td> <td class="style7" style="width: 355px">EMPLEADOS</td></tr> </tbody></table><br></div></div>

Esto mostrara lo siguiente:

Page 13: Cake Php Parte 1

Por el momento solo cambiamos la presentación de nuestra aplicación web

pero allí puedes poner tu página de inicio.

Como se usa un Modelo

Primero hay que crear el modelo, el modelo conecta alguna tabla de la base

de datos con el controlador y la vista. Nos vamos a la carpeta

C:\xampp\htdocs\cake\app\models y allí creamos un archivo llamado

cliente.php

Los archivos de tipo modelo deben escribirse en singular y en minúscula

seguido de la extensión .php, pero dentro de la clase debe escribirse el

mismo nombre pero la primera letra en mayúscula.

Dentro de cliente. Php escribimos:

<?php class Cliente extends AppModel { var $name = 'Cliente'; } ?>

Page 14: Cake Php Parte 1

Con esto tenemos una conexión simple con la tabla cliente, este es nuestro

modelo.

Como se usa unControlador

Ahora que ya tenemos nuestro modelo creamos el controlador, nos vamos a

la carpeta C:\xampp\htdocs\cake\app\controllers y allí creamos un archivo

llamado clientes_controller.php

Los archivos controladores deben llamarse igual que el modelo, pero en

plural y seguido con “_controller”, además de ir en minúscula y seguido de

.php. Pero dentro de la clase debe escribirse con el mismo nombre en plural,

la primera letra en mayúscula y seguido de “Controller”.

Dentro del archivo clientes_controller.php escribimos:

<?php class ClientesController extends AppController { var $name = 'Clientes'; var $helpers = array('Html', 'Form' ); function index() { } function registrar() { if (!empty($this->params['form'])) { if ($this->Cliente->save($this->params['form'])) { // $this->flash('Su Registro Fue aceptado con exito.', '/clientes/index', 0); $this->redirect('/clientes/index'); } else { $this->flash('Hubo un problema con su registracion', '/clientes/register', 0); }

Page 15: Cake Php Parte 1

} } //fin de la función registrar } //fin de la clase ?>

Como se usa una Vista

Ahora hay que crear la vista, para ello nos vamos a la carpeta

C:\xampp\htdocs\cake\app\views y allí creamos una carpeta llamada

clientes, entramos a ella y creamos un archivo llamado registrar.ctp y un

archivo index.php

Las vistas deben llamarse como el nombre de la función del controlador

seguido de .ctp que es como un scrip de php. Dentro de index.ctp escribimos:

<b>Control de clientes</b>

<form method="post" action="">

<br> <div style="height: 158px; width: 90px"> <br /> <label id="Label1">Modificar</label> <label id="Label1"><a href="/clientes/registrar">Agregar</a></label> <label id="Label1">Borrar</label> </div><br> </form>

Este será nuestro index o la pagina principal que se mostrara cuando

acecemos a clientes. Ahora dentro de registrar.ctp escribimos:

<head> <meta content="es-ni" http-equiv="Content-Language"> </head> <b>Control de clientes</b> <form method="post" action=""> <h2>Registro de Clientes del restaurante</h2> Nombres <br> <input name="nombres" style="width: 250px" type="text"> <br>Apellidos<br>&nbsp;<input name="apellidos" style="width: 251px" type="text"> &nbsp;<br> Direccion<br><input name="direccion" style="width: 400px" type="text"><br>

Page 16: Cake Php Parte 1

Telefono<br> <input name="telefono" style="width: 251px" type="text"><br>Edad<br> <input name="edad" style="width: 80px" type="text"><br> <input name="ingresar" style="width: 188px" type="submit" value="Ingresar"></form>

Con esto ya tenemos una vista para la función registrar. Ahora apuntamos a

http://localhost/clientes y seleccionamos el enlace agregar, esto nos llevara a

la página: http://localhost/clientes/registrar y nos aparecerá este formulario

de registro:

Page 17: Cake Php Parte 1

Introducimos los datos correspondientes y presionamos en ingresar, esto nos

registrar un nuevo usuario en a base de datos y listo. Lo demostrado hasta

aquí no explica las funciones y librerías y demás recursos que posee cake php

esto fue solo un ejemplo sencillo de cómo se ve y se utiliza su estructura.

ESTA HISTORIA CONTINUARA…