| Login | Tour | Inicio | Chat | Descargas | Wallpapers | Páginas recientes | FAQ | | ||
Custom Search
![]() Emacs como IDE para CakePHP aarkerio La Negación del Viaje Lunar tonathiu Porque los mononeurones si tenemos madre! blacksoul BrunoFerías thot The Art vendaval Aclimatación extraterrestre ¿para qué? ahuramazdah ¿A que le tienes miedo? teosho Sobre nazis, terror y medios tonathiu Amenazas a la cuarta dimensión ¿de veras? ahuramazdah Tarjeta Broadcom BCM94311MCG rev 02 teosho Pidiendo OpenSolaris 2008.5 vendaval Sospechosismo aarkerio Slackware 12.1 Final vendaval Jaime Maussan da por auténtico video trucado del chupacabras hecho en Blender 3D asarch Linux hot girl aarkerio Calderón puede ser sujeto a juicio político, sostiene Carrancá tonathiu La desnutrición en México aarkerio Sistema Infalible ordbal Histórico aarkerio Nietzsche en la FCPyS aarkerio ![]() GNU/Linux ![]() Hacktivismo ![]() Debian ![]() NetBSD ![]() WWW ![]() Guia Linux ![]() Server Side ![]() Ofimatica ![]() Despabilando... ![]() Mundo Maya ![]() Literatura ![]() Agora ![]() Psicologia ![]() Economia ![]() Ambientalismo ![]() Desarrollo Biologia ![]() |
Server Side \ miniBlog con CakePHP Este artículo ha sido consultado en 476 ocasiones. Un miniblog en CakePHP 1.2Paquetes necesarios para el ejercicio: $sudo apt-get install apache2 libapache2-mod-php5 postgresql php5-pgsql subversion Nota: en este tutorial utilizo los términos "método" y "acción" de manera indistinta. Con este término me refiero a las acciones del controlador de CakePHP. Es decir: http:/server.org/controller/action/. Este es un ejemplo de como crear una aplicación con CakePHP 1.2. Para hacer este ejercico se debe haber leído la documentación de CakePHP y la documentación temporal de la versión 1.2 además de este repaso. Se deben tener claros los tipos de relaciones que existen: hasMany, hasOne, belongsTo y HABTM. Se puede consultar este repositorio para ver ejemplos. Es buena idea hacer una conexión básica entre php5 y Postgresql para confirmar que el ambiente de desarrollo funciona de manera correcta. CakePHP 1.2 está en desarrollo por lo cual lo mejor es tener lo último del repositorio: $svn co https://svn.cakephp.org/repo/branches/1.2.x.x/ /home/pepe/cake Debemos editar el archivo /etc/apache2/sites-enabled/000-default y cambiar todo donde dice /var/www/cake/app/webroot/ a /home/pepe/cake/app/webroot. webroot es el direorio público de CakePHP, en este directorio es donde ponemos las imágenes, PDF's o CSS que necesitemos. Debemos asegurarnos que los módulos rewrite y php5 están activados: #a2enmod rewrite && a2enmod php5 && /etc/init.d/apache2 restart En Firefox nos ponemos en http://localhost y debemos ver los típicos mensajes de CakePHP 1.2 y tambián veremos la advertencia: Please change the value of 'Security.salt' in app/config/core.php Esta cadena es la que genera la sessión de seguridad de la aplicación por lo cual nunca debe haber dos cadenas iguales. Abrimos con nuestro editor favorito ( láase emacs o Jedit ) el archivo app/config/core.php y agregamos algunas letras y núÂmeros a la cadena Security.salt. En el archivo core.php tambián tenemos la variable debug que especifica que tantos mensajes de debug aparecen en pantalla. En aplicaciones en desarrollo se debe tener el debug en 1 (sólo errores) o en 2 (errores y consultas SQL): Configure::write('debug', 2); En aplicaciones en producción el debug por seguridad debe estar deshabilitado, es decir: 0. Creamos la base de datos e ingresamos a ella: $createdb -E UNICODE DBMYBLOG && psql DBMYBLOG Editamos el archivo app/config/database.php.default y el array default debe verse así: public $default = array( lo salvamos como database.php y al recargar localhost ya debe verse el mensaje: 'Cake is able to connect to the database'. En este caso vamos a crear un mini-Blog usando la base de datos PostgreSQL, es difícil entender porque la gente usa MySQL voluntariamente. MySQL es una buena base de datos, pero despuás de todo, inferior a PostgreSQL. Esta aplicación que vamos a crear es sencilla: un usuario agrega y publica noticias en su blog. Las noticias estáÂn organizadas en categorías que el mismo usuario crea y gestiona. Necesitamos algunas tablas para guardar la información, corta y pega del navegador a tu consola las tres tablas siguientes: CREATE TABLE users ( Nota que debes crear la tabla themes primero pues la tabla entries depende de ella. Como se puede notar, seguimos la convención de CakePHP de nombrar las tablas en plural. Tambián es una buena costumbre nombrar las en inglés. Nota que en la tabla "entries" la columna themes_id es una foreign key con la indicación "ON DELETE CASCADE", es decir que si se borra el tema tambián se borrarán las entradas relacionadas a este tema. Esto lo decide el diseñÂo de la BD y el tema está más allá de este tutorial. INSERT INTO users (id, username, pwd, email, blogname, name) VALUES (1, 'repostero', '3916784b451c011b7ec822fb9bb66cfc3b5dbf0e', 'spam@nojodas.com', 'El rincon del repostero', 'Manuel Montoya'); -- pwd = karamelo INSERT INTO themes (id, title) VALUES (1, 'Historia de México'); El modelo sirve entre otras cosas para consultar la información a la BD, asi que ncesitamos crear el modelo Entry para la tabla entries, en CakePHP los modelos son en singular: < ? p h p /* El modelo para entries*/ En el modelo reflejamos las asociaciones de la base de datos: por un lado decimos que cada Entry pertenece (belongsTo) a la categoría definida en el modelo Theme y por otro lado declaramos que cada Entry puede tener muchos (hasMany) comentarios en el modelo Comment. Ahora creamos el controlador, los controlados van en el directorio app/controllers/ en este caso el archivo se llama entries_controller.php: < ? p h p /** Mi Nombre, correo y licencia aqui */ $order = 'id DESC'; // ordena del más reciente al m&ás viejo El método findAll() busca todos los registros del modelo Entry, los coloca en la variable $data y esta varaible la pasa a la vista con el método set() del controlador. Ya solo nos falta crear la vista para el mátodo display() del controlador entries_controller.php, las vistas van en el directorio app/views/controller/method.ctp. La extensión es .ctp por "Cake Template". En este caso: /app/views/entries/display.ctp:
< h 1 >Entradas < / h1 >
< ? p h p Hay que hacer notar que tanto en el controlador como en la vista o el modelo se puede usar la función debug() para ver algún array. En la vista estoy usando el helper $html->div() que coloca una cadena en en layer. Si tu eres desarrollador web y nunca has usado helpers debo decirte una cosa: los amaras profundamente. Todo el tedio de escribir xHTML morirá si los usas. Ahora nos colocamos en http://localhost/entries/display y debemos ver esto:
Es decir el controlador ejecuta la función display(), la cual usa el modelo Entry y el resultado lo pasa ala vista donde se procesa apra mostra el resultado. RoutesUna vez que hemos creado el controlador entries con la acción display: /entries/display, es claro que este controlador/método debería ser la página de inicio de nuestra aplicación. En el archivo app/config/routes.php está definido el controlador/método por default de CakePHP. Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); Esta ruta específica que el controlador por default es 'pages/display' con una variable de valor 'home'. Para hacer de entries/display sea ahora nuestro 'index.php' cambiamos esta configuración a: Router::connect('/', array('controller' => 'entries', 'action' => 'display')); (No necesitamos la variable 'home'). Ahora al ir a http://localhost con nuestro navegador, CakePHP sabe que lo que debe ejecutar es /entries/display. Cooool! Colocando nuestro diseñoCakePHP busca en el directorio app/views/layouts buscando por el layout 'default.ctp' (los layouts también acaban con la extensión .ctp), si CakePHP no encuentra este layout usa uno propio. Vamos a crear nuestro layout para aplicar nuestro diseño. Guardamos este archivo como app/views/layouts/portal.ctp. (Si ya sé que los diseños no se hacen con tablas para este es un ejemplo). La parte más importante es la variable $content_for_layout, que es el que integra el resultado de la vista con el layout. También está echo $html->css("portal");, es decir que debes tener el archivo app/webroot/css/portal.css que es este. Cada método de un controlador puede tener un layout diferente, debemos modificar dos atributos de nuestro mètodo display debemos agregar: $ this - > layout = 'portal'; Una vez hecho esto, al recargar nuestra página debemos ver algo asi:
Continuar con "Auth Component" >> Ficha del autor: aarkerio manuel_ARRROBA_mononeurona.org Manuel Montoya estudió neuropsicología en la facultad y en el Instituto de Biomédicas de la UNAM. Trabajó en Compaq de México como diseñador de software, tiene diez años de experiencia en Java, PHP y SQL. Le interesan muchas cosas y neciamente le da por escribir sobre todas ellas. Actualmente trabaja en Chipotle Software, desarrollando Karamelo, una herramienta de e-Learning. Jedit.org y WindowMaker son su editor y escritorio favoritos. The most effective way to restrict democracy is to transfer decision making from the public arena to unaccountable institutions. Chomsky. Ver todos los articulos de aarkerio Última actualización: 2008-03-29 17:57:00-06 |
![]() Preparandome para el viaje a Puerto Vallarta... que triste... 2 hours, 42 minutes ago Du hast? 6 hours, 45 minutes ago Ich habe einen Kater, aber nicht so schlecht... 14 hours, 19 minutes ago Y yo un Abrazo. 1 day, 14 hours ago Dandole su habrazote a mi santa madre que me soporta 1 day, 16 hours ago esperando a que este el pozole 1 day, 17 hours ago Que estuvimos haciendo >> 10410 lecturas Sexualidad infantil y juvenil 9167 lecturas Anticoncepción de Emergencia 7840 lecturas Rompiendo cualquier clave WEP en unos pocos minutos 6920 lecturas Sinapsis y exocitosis 6227 lecturas Mi primer CakePHP, mmmmm cakeee 5264 lecturas Evolución filética en las hepáticas 4699 lecturas BASH y Primeros Comandos 4012 lecturas CakePHP II Active Record 3742 lecturas Cómo convertirse en hacker 3619 lecturas
|
| ||
| Castiga a los que tienen envidia haciéndoles bien. Proverbio Árabe | ||
| Este trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2008 © :: Colectivo MonoNeurona.org :: | ||