| Login | Tour | Inicio | Chat | Descargas | Wallpapers | Páginas recientes | FAQ | | ||
Custom Search
![]() Podcast feed with CakePHP 1.2 aarkerio Hummers para el SNTE litosteel Abusados con la extorsión telefónica tonathiu No se si Reir o Llorar vendaval Full text search engine aarkerio Sigue con nosotros aarkerio Hot and really brave aarkerio La resistencia xhaman Bug || Feature vendaval A bajo nivel vendaval ¿No que no tronabas, pistolita? asarch Cow Love aarkerio Entre espurios y talentos juveniles. chilicuil La UNAM sigue subiendo aarkerio Para entender la crisis aarkerio Tu billete de 20 ya vale menos...¿Se acuerdan? luzbel Regálame tus ideas ¿sí? tuanis ¿P's no que era imposible? aarkerio Intrepid Ibex beta disponible! der_teufel La matanza dejó una huella muy significativa y no queremos que vuelva a suceder tonathiu ![]() GNU/Linux ![]() Hacktivismo ![]() Debian ![]() NetBSD ![]() WWW ![]() Guia Linux ![]() Server Side ![]() Ofimatica ![]() Despabilando... ![]() Mundo Maya ![]() Literatura ![]() Agora ![]() Psicologia ![]() Economia ![]() Ambientalismo ![]() Desarrollo Biologia ![]() |
Server Side \ Mi primer CakePHP, mmmmm cakeee Este artículo ha sido consultado en 7,810 ocasiones.
Nota: Este documento es sólo un apoyo al manual principal de CakePHP . CakePHP es un framework que implementa el patrón de diseño MVC. Para quienes han trabajdo con Ruby on Rails (RoR), muchas cosas de CakePHP les resultarán muy familiares. La Wikipedia señala: Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página (X)HTML y el código que provee de datos dinámicos a la página.
1) El usuario da click sobre la liga http://server.org/tasks/index Podría parecer complicado, pero no lo es, luego de algunos días de trabajar con CakePHP esta secuencia muestra su bien pensada lógica y uno se empieza a preguntar "¿Cómo pude trabajar de la otra manera durante tanto tiempo?". Son muchas las ventajas del patrón MVC: sólidez, diseño, coherencia, modularidad, pero quizás las más importante es que hace mucho más fácil el mantenimiento y la cooperación entre varios desarrolladores. Algunas de las características de CakePHP:
Como señalamos en el diagrama, en CakePHP la llamada al controlador, el método y sus variables se activan mediante el URL, por ejemplo, en lugar de un feo: http://project.myserver.org/index.php?controller=pages&method=show&order=DESC&limit=15 En cakePHP sería: http://project.myserver.org/pages/show/DESC/15 Este URL quiere decir que hay un controlador "pages", el cual posee un método (o función) "show" y estamos pasándole dos valores, DESC y 15. En CakePHP, esta clase sería así: Archivo app/controllers/pages_controller.php HelpersLos helpers son una solución de CakePHP para dar un formato completo, correcto y válido a las etiquetas (tags) HTML o XHTML, todo ello sin el engorro de escribir todo el tag. Generalmente los helpers comienzan con $html-> o $form-> para los tags normales o $ajax-> en el caso de los helpers de Ajax. Una de las mejores características de CakePHP es que es fácilmente extendible, es decir, tu puedes crear tus propios helpers, pero eso lo veremos después. Por ejemplo, para construir una liga de todos los días con el helper $html->link(): $ html ->link('Ir a las frases', '/quotes/index', array('class'=>'small', 'title'=>'Describe liga') ); ?> Lo que resulta en: < a href="/quotes/index" title="Describe liga" clas="small"> Ir a las frases < / a > Para imprimir una imagen: $ html -> image('ruta/my_image.jpg', array("alt"=>"My Images", "title"=>"My Images"); ?> Es importante señalar que $html->image() busca las imágenes en app/webroot/img/. Por supuesto estos elementos de liga e imagen se pueden mezclar para construir una liga usando una imagen: $html ->link(html->image('ruta/myimages.jpg', array("alt"=>"My Images", "title"=>"My Images")), Por otro lado, para construir un formulario en una vista de CakePHP: archivo: app/views/pages/add.thtml Nótese que en este formulario ya estamos considerando el modelo pues se incluye la validación: $html->tagErrorMsg('Page/title', 'Title is required.'); que señala que CakePHP está considerando este campo del formulario como un campo obligatorio. Una vez más los usuarios de Ruby on Rails se sentirán en casa pues es la misma sintaxis.
Notemos también que los tags cortos de PHP, por seguridad, se evitan en el código de CakePHP. Si usamos lo Helpers, es casi seguro que podemos señalar nuestras páginas como páginas bien hechas: Instalación de CakePHPLa instalación es rápida y muy sencilla: $sudo apt-get install apache2 libapache2-mod-php5 postgresql-8.1 php5 php5-pgsql nos cambiamos al usuario www-data, nos vamos al directorio del webserver: $cd /var/www/ en este directorio debemos descargar CakePHP. En estos días la versión estable es la 1.1.13. Descomprimimos: $tar -jxvf cake_1.1.13.4205.tar.bz2 Renombramos: $mv cake_1.1.13.405 project Veremos dentro de /var/www/project cuatro directorios, app, cake, docs, vendor. El directorio cake nunca lo tocamos pues contiene las librerías estáticas del framework, vendor es donde debemos poner las librerías extras que no son parte de CakePHP, por ejemplo las librerías PEAR. Docs... bueno, son los docs. En realidad, es en app donde trabajaremos. Dentro del directorio app esta el directorio webroot, este es el root de la aplicación, es decir, a partir de aqui es lo que está visible para los internautas. Al ponernos en: http://myserver.org/project/app/webroot/ ya podemos ver a CakePHP:
No obstante, lo mejor (por comodidad, seguridad y profesionalismo) es hacer que webroot sea realmente el webroot. Para configurar una instancia de CakePHP en Apache2, tecleamos: $sudo mcedit /etc/apache2/sites-available/project.myserver.org Y adentro ponemos:
Lo guardamos y salimos. Creamos la liga simbólica: $sudo ln -s /etc/apache2/sites-available/project.myserver.org /etc/apache2/sites-enabled/project.myserver.org Por supuesto hay que crear el directorio para que Apache2 pueda escribir los logs que le corresponden a CakePHP: $mkdir /var/www/project/logs Reiniciamos: $sudo /etc/init.d/apache2 restart Y ya podemos ver a CakePHP en: http://project.myserver.org Ahora, como usuario postgres creamos nuestra base de datos PostgreSQL ( I like pgsql ;-) ): $createdb -E UNICODE DBCENTAURO Editamos: $mcedit app/config/database.php.default Con F12 salvamos este archivo como database.php, debemos editar para tener algo así: < ? php La base de datos $test no la vamos a utilizar en este momento. El archivo pg_hba.conf de PostgreSQL debe estar configurado para aceptar conexiones del localhost. Ahora el recargar la página debes ver el mensaje "Cake is able to connect to the database". Mi primer MVC Ahora crearemos nuestro primer MVC. Primero (dentro de PostgreSQL) crearemos la tabla quotes y le agregaremos algunos registros. Por convención, en CakePHP las tablas tienen nombre en plural: CREATE TABLE quotes ( INSERT INTO quotes ("quote", "author") VALUES ('Yo no hablo de venganzas ni perdones, el olvido es la única venganza y el único perdón.', 'Borges'); Ahorea creamos el modelo para esta tabla: Archivo: app/models/quote.php Nota: en los siguientes ejemplos usaré especificaciones como "private", "restricted", "public" que, como ya sabes, son exclusivas de la POO de PHP5, si estas programando en PHP4, omítelas. El array $validate de los modelos (en este caso Quote), indican que campos son obligatorios en la tabla. Por convención, los archivos del modelo se nombran en singular así como también la clase, en este caso: quote.php y Quote. Ahora creamos el controlador: Archivo: app/controllers/quotes_controller.php Esta clase sólo posee un método: index(), si no hay indicación de método en el URL este es el método que CakePHP ejecuta por omisión. Cada método del controlador tiene una vista que presenta el XHTML al usuario, el nombre del método del controlador es el mismo que el de su vista, si el método se llama index(), el archivo de la vista debe llamarse index.thtml, si el método es listado() la vista es listado.thtml, etcétera. En este caso: archivo: app/views/quotes/index.thtml
foreach ($data as $val) Ya tenemos nuestro MVC. Si ahora con Firefox nos colocamos en http://project.myserver.org/quotes/index veremos el listado de nuestras frases en PostgreSQL. Así de simple y potente es desarrollar con este framework. Al trabajar con CakePHP, debemos acostumbrarnos a consultar constantemente las clases de su API, pues así sabemos exactamente que métodos y atributos tiene cada clase padre, pues en CakePHP sólo creamos y trabajamos con clases hijas. El layout El layout es el template general del sitio, el layout por omisión debes colocarlo en app/views/layout/default.thtml, puede ser tan simple como: Archivo: app/views/layout/default.thtml < ? php echo $this->renderElement('footer'); ?> Nota que la hoja de estilos app/webroot/css/estilos.css se incluye con $html->css("estilos"). La variable $title_for_layout debe ser colocada en el método del controlador: $this->pageTitle = 'Mi titulo'; La variable $content_for_layout es el resultado de la vista. $this->renderElement() es un método de CakePHP para colocar pequeños bloques dentro del layout, sólo hay que poner el elemento dentro del directorio /app/views/elements/. En este caso yo tengo footer.thtml, que tiene la información típica del footer y que varios layouts comparten. Puedes tener tantos layouts como te hagan falta, sólo debes indicar en el controlador cuál vas a usar con la variable: $this->layout = 'ruby'; Pero por omisión CakePHP busca default.thtml. 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, Python, 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. Emacs 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: 2007-04-29 10:57:00-05 on 9/7/07 enriqueism wrote: Tengo una pregunta...que pasa si el nombre de mis tablas estan en singular no en plural. Cambia en algo la definición del modelo. on 10/7/07 aarkerio wrote: si, tendrás problemas, renombra tus tablas. En PostgreSQL es con ALTER TABLE user RENAMNE TO users; on 25/7/07 moises wrote: Gracias excelente articulo on 10/12/07 felipe fernandez wrote: Mas salvao la vida colega. on 7/4/08 Marta wrote: Hola quisiera saber si esta herramienta trabaja tambein con mysql y si saben de algun tutorial o pagina que hable de ello on 5/5/08 gabriela wrote: Hola como estan soy nueva en el uso de cakephp y de verdad no tengo mucho conociemiento en la construccion de formularios en el mismo!!mi pregunta es como puedo hacer para construir formularios para ingresar eliminar y modificar registros en una base de datos |
![]() TheInquererES: La elevada demanda de OpenOffice 3 ha tirado su web 2 hours, 45 minutes ago recibiendo calificacion, espero 10 ;-) 3 hours, 37 minutes ago En clase de base de datos 3 hours, 38 minutes ago En clase de Etica... 4 hours, 26 minutes ago Corriendo mi algoritmo para fragmentacion. 1 day ago =( Se em barrio y estoy en un curso de GNU/linux para usuarios Noveles 2 days, 17 hours ago Que estuvimos haciendo >> 18189 lecturas Anticoncepción de Emergencia 15739 lecturas Sexualidad infantil y juvenil 12402 lecturas Rompiendo cualquier clave WEP en unos pocos minutos 11112 lecturas Sinapsis y exocitosis 11094 lecturas Mi primer CakePHP, mmmmm cakeee 7810 lecturas Evolución filética en las hepáticas 7665 lecturas Interrupción de Embarazo 5943 lecturas BASH y Primeros Comandos 5941 lecturas CakePHP II Active Record 5858 lecturas
|
| ||
| Todo lujo es horrible, por su naturaleza misma, es degradante. Alfonso Reyes | ||
| Este trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2008 © :: Colectivo MonoNeurona.org :: | ||