Zen Scaffolding - Programador PHP

1,015 views

Published on

Gracias a http://programadorphp.org/
El Scaffolding de Zenphp.es

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,015
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Zen Scaffolding - Programador PHP

  1. 1. El Scaffolding de zenphp Serie de manuales sencillos IV PROYECTO : ZENPHP Marzo - 2008 El Scaffolding de zenphp | Autor: Juan Belón Pérez http://blog.zenphp.es 1
  2. 2. Introducción: Manual para empezar a usar Scaffolding zenphp : zen_andamio (scaffolding) ¿Qué es scaffolding? Un método sencillo de acceso a los datos de la base de datos. Un ejemplo de una aplicación que usa scaffolding es PhpMyAdmin, aunque podemos encontrar esta técnica muy extendida en conjuntos de librerías de programación PHP como CakePHP, Symfony o CodeIgniter y además en Ruby on Rails. En este documento se explica cómo construir fácilmente un acceso a dicha técnica… El Scaffolding de zenphp | https://forja.rediris.es/projects/csl2-zenphp/ 2
  3. 3. El Scaffolding de zenphp en 10 minutos 1. Crear una aplicación sencilla con un modelo asociado. 2. Añadir el scaffolding al modelo asociado de la aplicación. 3. Probar Scaffolding 1. Crear una aplicación SENCILLA con un modelo asociado Para este ejercicio deberemos tener descargado zenphp, esto podemos hacerlo directamente de la página web o bien descargarlo por SVN con el comando: svn checkout https://forja.rediris.es/svn/csl2-zenphp/trunk zenphp y colocar dicho directorio en nuestro directorio de pruebas, ejemplo: /htdocs/miweb de forma que queda tal como /htdocs/miweb/zenphp Configura en /htdocs/miweb/zenphp/zen.php las 3 primeras constantes. La aplicación por defecto de zenphp se llama prueba y se encuentra en /htdocs/miweb/zenphp/aplicaciones/prueba.php dicha aplicación es llamada desde /htdocs/miweb/index.php, abre este fichero y añade justo debajo de “var $html;” el siguiente código PHP: /** * @var posts */ var $posts; Con esto estarás añadiendo una variable a la aplicación prueba y ahora vamos a crear el modelo asociado, para ello necesitamos crear un fichero en /htdocs/miweb/aplicaciones/modelos/posts.php con la definición del modelo, realmente ni siquiera necesitamos el fichero,bastaría con añadirlo justo debajo de la clase prueba pero así tendremos las cosas mucho más claras. Por suerte he tenido la honradez de escribir el código del modelo de datos asociado: El Scaffolding de zenphp | 1
  4. 4. <?php class posts extends zen_modelo_datos { /** * La variable padre es sobrecargada, realmente no es necesaria pero lo hago para * que los editores me tomen el tipo de mi aplicación y no el de zen_aplicacion y * poder así acceder a los métodos de mi aplicación en el editor. * * @var prueba */ var $padre; /** * Constructor * * @param prueba $padre * @return posts */ function posts(&$padre){ //Necesitamos llamar al constructor del padre para especificar la configuración del modelo // Si no colocamos los campos, el constructor de zen_modelo_datos lee los campos de la tabla "posts" // en otro caso, si se especifican se mantienen en la configuración parent::zen_modelo_datos($padre,"","posts"); } } ?> Ésta es la clase, pero ¿cómo la carga la aplicación?, para ello añadimos en aplicaciones/prueba.php ,justo debajo de “$this->html =& new html_prueba($this);” la línea: zen___importar_modelos($this); ¿qué hace ésta línea? es el equivalente a ______ require_once('modelos/posts.php'); $this->posts =& new posts($this) ______ si queremos importar sólo unos cuantos modelos podemos hacer lo siguiente: zen___importar_modelos($this,"posts,noticias"); de esta forma estamos añadiendo sólo los modelos posts y noticias, que, además automáticamente cargan sus vistas. Las vistas son los controladores en zenphp, con,simplemente crear un fichero en aplicaciones/vistas/html_posts.php se carga dicha vista y se asocia al modelo, si no se El Scaffolding de zenphp | crea dicho fichero se coloca una vista+controlador por defecto que es el zen_html_modelo_datos. Tras todos los cambios la clase de aplicaciones/prueba.php ha de quedar así: 2
  5. 5. <?php class prueba extends zen_aplicacion { //zen_aplicacion extiende de zen /** * Visualizador HTML para la clase * * @var html_prueba */ var $html; /** * @var posts */ var $posts; /** * Constructor * @param str $inicializadores clases separadas por comas, a inicializar * @return prueba */ function prueba($inicializadores=""){ parent::zen_aplicacion($inicializadores); $this->html =& new html_prueba($this); zen___importar_modelos($this); //Carga todos los modelos aqui /* zen___importar_modelos es el equivalente a hacer para cada modelo: --- require_once('modelos/posts.php'); $this->posts =& new posts($this);/ --- Podemos cargar sólo los modelos que necesitemos así: zen___importar_modelos($this,"posts,noticias"); */ } } /** * Para mostrar el HTML por pantalla con una plantilla */ class html_prueba extends zen_html { /** * Clase plantilla para leer y mostrar HTML * * @var zen_plantilla */ var $plantilla; /** * Constructor * * @param prueba $_padre * @return html_prueba */ function html_prueba(&$_padre){ parent::zen_html($_padre); El Scaffolding de zenphp | //$this->plantilla =& new zen_plantilla("base_web.html"); //en media/plantillas/es/base_web.html //donde 'es' es el idioma por defecto, español } } ?> Ahora podemos acceder al andamio del modelo post simplemente añadiendo la variable andamio pero antes tendremos que crear la tabla en la base de datos, 3
  6. 6. recordemos que para configurar la base de datos necesitamos definir las constantes PHP de la conexión, para ello disponemos del fichero aplicaciones/prueba.config.php, ábrelo y coloca sus parámetros. Para crear la tabla podemos usar PhpMyAdmin o bien los comandos de la clase mediante la referencia a la base de datos en el constructor de prueba.php, justo antes de “zen___importar_modelos($this);”: $this->bd->crear_tabla("posts ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(50), cuerpo TEXT, creado DATETIME DEFAULT NULL, modificado DATETIME DEFAULT NULL );"); Basta con cargar en el navegador http://localhost/miweb/ y se creará automáticamente, entonces podemos borrar la línea de creación. 2. Añadir S CAFFOLDING al modelo asociado de la aplicación Para que se pueda acceder al andamio o scaffolding del modelo de datos vamos a nuestra clase aplicaciones/modelos/posts.php y añadimos justo debajo de “var $padre”, el siguiente código: /** * Scaffolding de zenphp * * @var zen_andamio */ var $andamio; La variable se puede llamar de las formas que se hayan definido en /htdocs/miweb/zenphp/zen.php -> ZF_PALABRAS_ANDAMIO, por defecto son scaffold y andamio de forma que podemos acceder al Scaffold o Andamio por medio de la adición de una de ellas en nuestro modelo de datos. 3. Probar S CAFFOLDING Llendo a la dirección: http://localhost/miweb/index.php/nombre_modelo_datos/andamio/ o bien http://localhost/miweb/index.php/nombre_modelo_datos/scaffold/ En nuestro caso iremos a nuestro modelo posts mediante El Scaffolding de zenphp | http://localhost/miweb/index.php/posts/andamio/ Para ver el resultado de la operación debe devolver algo muy parecido a la siguiente captura: 4
  7. 7. El Scaffolding de zenphp | 5
  8. 8. ¿Qué viene a continuación? Lo único que resta ahora es editar los datos, el proceso del andamio contínua, estoy desarrollando mejoras con los campos, edición con áreas de texto dinámicas, y otras muchas mejoras que seguro son de agradecer… Como se suele decir… ¡Sigan atentos a sus pantallas! El Scaffolding de zenphp | 6

×