November 23rd, 2008 Category: varios Zend Framework
12 Comments »


Creando un blog desde cero.

Introduccion al proyecto.

La idea de este proyecto, es tratar de transmitir mis conocimientos sobre Zend Framework, y mostrar que es muy simple trabajar con el. Hace tiempo que llevo trabajando con este framework, y me facilita mucho el trabajo diario, y el trabajo en grupo. El blog posiblemente cuando se termine reemplaze a mi worpress, pero eso veremos mas  adelante como evoluciona el proyecto.

Cuando ustedes lean esto el blog va a estar bastante encaminado. Cada parte importante del desarrollo del blog voy a postearlo para que hagan comentarios, y el aprendizaje sea de apoco y no todo de golpe.

Subi el proyecto a google code, por cada corte importante del proyecto cree un tag, ese tag corresponde a un post especifco donde se explican los cambios y porque aplicamos tal o cual cosa.

Una vez el proyecto este terminado cualquiera tiene derecho a implementar este  blog que vamos a desarrollar aca es open source, y totalmente libre.

Manos a la obra

La gente que este leyendo este post, y no sepa nada de Zend Framework quizas les cueste un poco mas entenderlo porque hay conceptos que ya se hablaron en este blog, y no quiero repetirlos, si hay algo que no entienden pueden preguntarlo o googlearlo.

Lo primero que vamos a hacer es armar la estructura, que va a ser practicamente la misma que en el articulo que arme hace varias semanas, pero con algunos cambios, la carpeta apps, se va a llamar application, y la carpeta html sera webroot. Ademas vamos a mover la carpeta layout dentro de webroot.

Creando el virtual host.

# Blog para el proyecto

    ServerAdmin soporte@blogzf.com
    DocumentRoot /var/www/html/blogzf/webroot
    ServerName blogzf.dev
    
        Options FollowSymLinks
        AllowOverride All
    
    # Opciones de PHP
    php_value include_path .:/var/www/html/blogzf/webroot
    ErrorLog logs/blogzf-error.log
    CustomLog logs/blogzf-access.log common

Lo primero que vamos a crear es el bootstrap, que va a ser muy simple por ahora, y generar un layout basico que vamos a pedir prestado por ahi. La configuracion inicial va a quedar bastante basica. Vamos a crear un controller IndexController, un bootstrap index.php en la carpeta webroot, un .htaccess en la carpeta webroot tambien, y una carpeta con el nombre del layout, tambien vamos a agregar como external la libreria de Zend al proyecto. Si queres saber mas sobre como hacer esto, ya hay un post en el blog.

Para ir viendo como quedo esta parte del blog pueden bajarse los archivos del tag de esta version del proyecto haciendo.

$ svn import http://blogzf.googlecode.com/svn/tags/paso_1_layouts_y_configuracion/

Si crearon bien el virtual host, con solo escribir en el navegador http://blogzf.dev:8001/, tienen que ver algo parecido a esto.

Analizando el codigo.

Como primer punto voy a describir el bootstrap, basicamente este archivo tiene que tener una configuracion basica, para que pueda llamar al controller que correspondiente, y asi ejecutar la accion que requerimos.

Nuestro bootstrap es el siguiente.

 'colorpaper/colorpaper',
                'layoutPath' => 'layout/'
);
Zend_Layout::startMvc( $options );
/**
 * Setup controller
 */
$controller = Zend_Controller_Front::getInstance();
$controller->setParam( 'config', 'config.default.ini' )
    ->setControllerDirectory('../application/controller')
    ->throwExceptions(true)
    ->dispatch();

Hacemos unas configuraciones basicas, y despues que le decimos lo path del sistema, esto lo hacemos para que la comunicacion entre carpetas, sea mas sencilla. Algo importante que va a tener nuestro sistema de Blog, es que vamos a usar Zen_Loader::registerAutoload();, lo que hace este componente, es tratar de incluir el archivo que estes llamando, de esta forma si escribis bien el nombre de una clase, haciendo referencia al path, no necesitas hacer un required, o include. Si bien esto no es muy recomendable, porque cae un poco el rendimiento, tambien es cierto que es muy comodo :) , igual despues mas adelante, cuando optimizemos el sistema, vamos a arreglar un poco este problema.

Las siguientes lineas corresponden a la configuracion del layout, que en este caso agregamos un layout, que se llama colorpaper, y queremos que ejecute colorpaper.phtml.

Las ultimas lineas ejecutan el controller,

Si vemos el codigo vamos a ver que no hay nada raro en especial tenemos un controller (IndexController), con un preDispatch, y un indexAction. El preDispatch ejecutamos todo lo que necesitamos que se cargue antes de empezar a ejecutar la accion.

view->staticServer = 'http://blogzf.dev:8001/';
        $this->view->appServer = 'http://blogzf.dev:8001/';

        /**
         * Agrego el titulo de la pagina
         */
        $this->view->headTitle()->append('Blog con Zend Framework');
        /**
         * Agrego los css para esta pagina
         */
        $this->view->headLink()
            ->appendStylesheet( $this->view->staticServer . 'layout/colorpaper/css/jd.gallery.css' )
            ->appendStylesheet( $this->view->staticServer . 'layout/colorpaper/css/pink.css' )
            ->appendStylesheet( $this->view->staticServer . 'layout/colorpaper/css/style.css' );

En las primeras lineas del preDispatch, configuramos dos propiedades, que van a afectar a las vistas y al layout, uso dos tipos de variables para guardar el dominio, porque puede surgir que yo tenga por un lado un servidor para las imagenes, css, html y en otro servidor la aplicacion en si. Por ahora va a ser la misma, pero esto va a depender de ustedes.

Al hacer $this->view->staticServer, le estamos diciendo que cree una propiedad staticServer, esta es la forma en que ZF comunica desde un controller a una vista.

Despues tenemos la linea

$this->view->headTitle()->append('Blog con Zend Framework');

Aca estamos seteando el titulo del blog.

Y en la siguientes lineas, agregamos los css, que vamos a trabajar.

Cuando nosotros apendeamos, un titulo, los meta, los css, y los js, podemos mostrarlos desde la vista muy facilmente, usando los metodos que van a encontrar en el layout, que veremos mas adelante.

Por ahora nuestro indexAction no hace nada, lo mismo que la vista del mismo.

Como primera meta de este proyecto me propuse tomar un diseño modernoso, y adaptarlo al sistema de layout de Zend. Quise darle un aspecto atractivo, para que llame la atencion, y vean un poco el potencial del proyecto, que a veces el problema con excelentes proyectos de este tipo el problema es que no son atractivos y no llaman la atencion, este proyecto busca llamar la atencion, por eso este diseño. Lo unico que queria para esta parte es que me mostrara los datos de forma estatica pero minimante configurado el layout, y digo minimamete porque este layout va ir mutando a medida que avanze el proyecto.

Com hablamos antes en el preDispatch, apendeamos el title, y los css del layout, para mostrarlos desde nuestro layout, hicimos lo siguiente.

<!DOCTYPE HTML PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html dir=”ltr” xmlns=”http://www.w3.org/1999/xhtml” lang=”en-US”>
<head profile=”http://gmpg.org/xfn/11″>
<?= $this->headMeta() ?>
<?= $this->headTitle() ?>
<?= $this->headScript() ?>
<?= $this->headLink() ?>
</head>
<body>

Bueno por hoy es suficiente, para la proxima vamos a seguir separando el layout, para que nos quede mejor dividido, y vamos a usar archivos de configuracion, para guardar los datos de nuestros sistemas.

En esta parte del proyecto vimos los siguientes componentes.
* Zend_Controller
* Zend_Loader
* Zend_Layout


Invitame una Cerverza


Comentar


12 Responses

meneame.net 2008-11-24 10:09:53
Creando un blog con Zend Framework - Parte 1...

Una guia para crear un blog, al estilo wordpress, con Zend Framework....

Max 2008-11-24 11:21:34
Hola, cuando trato de hacer un checkout a tu svn en la direccion http://blogzf.googlecode.com/svn/trunk/paso_1_layouts_y_configuracion

Me sale un error en el tortoise url doesnt exist...

Pablo Morales 2008-11-24 11:23:31
La url para hacer un checkout, es http://blogzf.googlecode.com/svn/trunk/

Si queres hacer un checkout del tag de este post.

http://blogzf.googlecode.com/svn/tags/paso_1_layouts_y_configuracion/

Saludos, y graracias por avisarme del error

sofway 2008-11-25 00:53:19
Excelente Pablo. Voy a estar muy pendiente del proyecto.
Cada cuanto vas a estar publicando progresos???
Saludos
Santiago
Colombia

Pablo Morales 2008-11-25 01:03:55
Hola Santiago, en un rato estoy subiendo la segunda parte, y para el jueves la tercer parte

Sergio Gabriel 2009-02-04 19:23:01
Hola Pablo, estoy haciendo un svn import al tag de este post y me pide un user y pass, cuál es? gracias

Sergio.
www.3trex.com.ar

Sergio Gabriel 2009-02-04 21:34:32
Pablo otra consulta, instalé xampp y colgué la carpeta Zend fuera de htdocs para asi poder referenciarla desde cualquiera proyecto, lo que hice fue incluir el path en el php.ini y funciona perfecto mi pregunta es, haciendo esto, para que sirve la carpeta library? otra pregunta, con esta configuración, es necesario usar el "set_include_path" en el bootstrap?
Gracias.

Sergio Gabriel
http://www.3trex.com.ar

Pablo Morales 2009-02-05 11:12:07
Hola Sergio

1- Tu usuario es el de gmail, con el @gmail.com incluido. La clave la podes obtener desde aca http://code.google.com/hosting/settings

2- Los componentes dentro de Zend Framework se incluyen como include( 'Zend/Componente.php'), por eso tenes que poner el set_include_path, tambien tenes que incluir los modelos, y otras cosas, pero por ahi tenes otras soluciones como la que explicas, el problema es que es dificil que te dejen tocar el php.ini en un hosting.

jpedroso 2009-07-11 22:37:47
Saludos,

Se le ha ocurrido hacer el blog con el Zend Framework 1.8, esto sería de mucha ayuda para principiantes como yo en el Zend.

rolly 2009-07-29 12:02:30
Estoy de acuerdo con jpedroso, nos seria de mucha utilidad a los novatos.

Desde ya muchas gracias.

Brett Kromkamp 2009-10-03 08:38:35
He desarrollado mi propio web basado en mapas de topicos incluyendo el motor de mapa de topicos con PHP y Zend Framework: http://www.quesucede.com. Ha sido una experiencia tanto productivo como agradable.

Zend Framework – INICIO « Oscar Viana's Weblog 2010-05-10 13:49:13
[...] http://blog.pablo-morales.com/2008/11/creando-un-blog-con-zend-framework-parte-1/ [...]