Loading




Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[howto] Primeros pasos con CakePHP
 
11-07-2010, 10:52 PM
Mensaje: #1
[howto] Primeros pasos con CakePHP
Hasta ahora me había tocado hacer pequeños programas en php, de no más de 20 o 30 scripts, pero conforme uno da resultados le encargan cosas cada vez más complejas, por lo que me vi en la situación de elegir un framework de desarrollo.

Luego de leer un poco me decidí por Cake, ya que no dispongo de demasiado tiempo y es bastante simple. Si usan Wamp o Xamp en Windows descomprimen cake en htdocs y listo, instalado.

El Linux sin embargo me encontré con algunos inconvenientes, no voy a explicar la instalación de Cake que está debidamente documentada en http://book.cakephp.org/es/view/879/Begi...th-CakePHP sino que voy a ir directo a los problemas que pueden surgir y las modificaciones para eliminar los warning() del index principal.

Los parámetros utilizados son los de una instalación openSuse, así que puede haber diferencias con otras distribuciones.

Para facilitarme las cosas me adueño del DocumentRoot de apache:
# cd /srv/www
# chown -R martin.users htdocs
Descomprimimos Cake en /srv/www/htdocs
Damos permiso de escritura en la carpeta tempotal:
> cd /srv/www/htdocs/app
> chmod -R o+w tmp

Nos aseguramos que tenemos mod_rewrite habilitado:
# vim /etc/sysconfig/apache2
APACHE_MODULES="suexec access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif userdir ssl php5 rewrite"
Si añadimos rewrite corremos:
# SuSEconfig
# rcapache2 restart

Si aún no funciona nos aseguramos de tener los archivos .htaccess debidamente configurados, si tienen cake en una subcarpeta deben indicarlo en RewriteBase:
/srv/www/htdocs/.htaccess

Options +FollowSymlinks
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

/srv/www/htdocs/app/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>

/srv/www/htdocs/app/webroot/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>


Creamos una copia del archivo database.php.default
> cd /srv/www/htdocs/app/config
> cp database.php.default database.php
Editamos los datos de conexión:

class DATABASE_CONFIG {

var $default = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'clave',
'database' => 'cake',
'prefix' => '',
);

var $test = array(
'driver' => 'mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => 'clave',
'database' => 'cake_test',
'prefix' => '',
);
}

Yo cree las bases de datos cake y cake_test, pero pueden tener el nombre que elijan.
Si utilizan el usuario root de mysql deben asignarle contraseña, esto se puede hacer desde phpmyadmin o desde la consola de mysql:

> mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.36-log SUSE MySQL RPM
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set password for 'root'@'localhost' = password('clave');
mysql> create database cake;
Query OK, 1 row affected (0.00 sec)
mysql> create database cake_test;
Query OK, 1 row affected (0.00 sec)
mysql> use cake;
mysql> CREATE TABLE users (
-> id int NOT NULL auto_increment PRIMARY KEY,
-> nameUser varchar(70) default NULL
-> );
Query OK, 0 rows affected (0.05 sec)
mysql> quit
Bye

Nos aseguramos de tener configurada la variable timezone en nuestro php.ini:
# vim /etc/php5/apache2/php.ini
Linea 996 date.timezone = "America/Buenos_Aires" o su zona horaria.

La creación de la tabla users va de yapa para mostrar bake, una utilidad de cake que nos creará la plantilla básica del controlador, el modelo y la vista a partir de las tablas de nuestra base de datos:

> ./cake bake all
Welcome to CakePHP v1.3.2 Console
---------------------------------------------------------------
App : app
Path: /srv/www/htdocs/app
---------------------------------------------------------------
---------------------------------------------------------------
Bake All
---------------------------------------------------------------
Use Database Config: (default/test)
[default] >
Possible Models based on your current database:
1. User
Enter a number from the list above,
type in the name of another model, or 'q' to exit
[q] > 1

Baking model class for User...

Creating file /srv/www/htdocs/app/models/user.php
Wrote `/srv/www/htdocs/app/models/user.php`
User Model was baked.
SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n)
[y] > y

La salida de texto es más extensa, pero no hay mas opciones.

Si visitamos nuestra ip en el navegador veremos cake instalado con imágenes y hojas de estilo(si no las ven tienen problemas con los .htaccess), y si visitamos nuestra ip/users podremos ver la plantilla de nuestra tabla de usuarios.


Dos imágenes de muestra, la primera de cake instalado y la segunda de las plantillas armadas con bake a partir de la tabla users:

[Imagen: cake111j.jpg]

[Imagen: cake112j.jpg]

Saludos

- La seguridad es más importante que la usabilidad. En un mundo perfecto, nadie debería ser capaz de utilizar nada.
Encuentra todos sus mensajes
Cita este mensaje en tu respuesta
Enviar respuesta 


Posibles temas similares...
Tema: Autor Respuestas: Vistas: Último mensaje
  [howto]Como asegurar sitios en PHP - Security Checklist p_eter 0 2.335 10-09-2010 09:21 AM
Último mensaje: p_eter

Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)
Contáctanos | Portal de Noticias | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS