MENU

Ubuntu (7) Dojo (2) Zend Studio (2) ZendFramework (2) Apache (1)
Mostrando entradas con la etiqueta ZendFramework. Mostrar todas las entradas
Mostrando entradas con la etiqueta ZendFramework. Mostrar todas las entradas

lunes, 16 de julio de 2012

Dojo + ZendFramework en Ubuntu y con Zend Studio


Primero que nada debemos instalar dojo en el sistema ubuntu. Afortunadamente lo podemos hacer usando el centro de software o lo que nos guste mas para instalar estos paquetes:

libjs-dojo-core
libjs-dojo-dojox
libjs-dojo-dijit

Bien, ahora creamos un nuevo proyecto en Zend Studio, esta guía esta basada en el ejemplo que trae para instalar este programa, donde ya nos crea un entorno como para empezar con layout y todo. El layout es como un contenedor principal que se usa para darle un aspecto general a nuestro sitio web, básicamente es para no repetir código con cosas que van a estar siempre presentes.
Debemos incluir la librería de dojo en el proyecto, para esto es necesario hacer un vinculo simbólico del lugar en donde se instalo a la carpeta public que esta creada en nuestro proyecto. Un vinculo simbólico es como un especie de acceso directo, si no sabemos como hacerlo en google hay bastante información. La idea entonces es hacer este atajo desde:

/usr/share/javascript/
/la/carpeta/de/nuestro/proyecto/public/js

Le llame js al directorio donde van a estar estas librerías de javascript
Como comentario, para dar soporte en la corrección de dojo podemos hacer clic derecho sobre el proyecto Configure->Add Dojo y listo, ya nos corrige.
Ahora si vamos a editar algunos archivos para poder usar los ayudantes de Dojo que tiene el framework. Empecemos por el Bootstrap, aquí es donde debemos agregar algo para inicializar esto:

protected function _initViewHelpers(){
        $this->bootstrap('view');
        $view = $this->getResource('view');
        Zend_Dojo::enableView($view); }

Esta funcion debe si o si empezar con _initAlgo, en este caso se llama _initViewHelpers()
Luego, editamos el layout, esto que voy a poner es practicamente igual que la documentacion original de Zend:

<?php echo $this->doctype() ?>

<html>

<head>

    <?php echo $this->headTitle() ?>

    <?php echo $this->headMeta() ?>

    <?php echo $this->headLink() ?>

    <?php echo $this->headStyle() ?>

<?php if ($this->dojo()->isEnabled()){

    $this->dojo()->setLocalPath('/js/dojo/dojo.js')

                 ->addStyleSheetModule('dijit.themes.claro');

    echo $this->dojo();

   }

?>

    <?php echo $this->headScript() ?>



</head>

<body class="claro">

    <?php echo $this->layout()->content ?>

    <?php echo $this->inlineScript() ?>

</body>

</html>


En el controlador podemos crear un botón para ver como seria:

    public function indexAction()

    {

        $boton = new Zend_Dojo_Form_Element_Button('Prueba');                                         

        $this->view->boton = $boton;

    }


Y en la vista (index.phtml) lo mostramos:

echo $this->boton;
?>

Si probamos en nuestro navegador deberíamos ver algo como esto:


sábado, 14 de julio de 2012

Instalar Zend Framework en Ubuntu 12.04 y VirtualHost de Apache



Teniendo ya instaldo apache, php5 y todo el entorno funcionando, solo no hace falta entonces instalar el zend framework que es lo que queremos.

sudo apt-get install zend-framework

Bien, con esto ya tenemos las librerías en el sistema pero no hacemos nada con esto. Tenemos que configurar el lugar o proyecto donde vamos a trabajar (nuestro sitio hecho con zend framework). Hay varias formas de configurar apache y el sistema pero aquí voy a comentar la forma que a mi me gusta mas. Yo prefiero hacer un host virtual por proeycto que se me ocurra hacer. El nombre de este host puede ser incluso el que va a tener cuando este al aire, por ejemplo: misitiozend.com
Y si vamos a programar en el mismo lugar donde esta nuestro apache recomiendo empezar por editar el archivo hosts del sistema.

sudo gedit /etc/hosts

En el archivo debemos agregar una linea debajo de la que dice localhost, esta es para el nombre que va a llevar nuestro proyecto

127.0.0.1    misitiozend.com

Si probamos en el navegador a poner misitiozend.com veremos el famoso "It Works !" de cuando recién instalamos apache.

Para hacer y manejar los proyectos de Zen uso la herramienta que ellos sugieren (Zend Studio). Es sencillo, vamos a File->New->Proyect.. Se no abre un asistente con un árbol de opciones, tenemos Examples->Zend Framework->Zend Framework example project. Le damos a Next y no da a elegir si queremos guardar el proyecto en la ruta por defecto o si preferimos definirla nosotros, a mi me gusta esta ultima opción para controlar mejor donde tengo las cosas. Debemos definir un nombre también es esta parte, misitiozend.com por ejemplo. Con Finish el programa crea toda la estructura de directorios y lo necesario para trabajar, hay otras herramientas gratuitas que puede hacer lo mismo.



Bien , fantástico hasta aquí genial. Ahora el tema que tenemos es que, si bien aparece algo cuando ponemos misitiozend.com en el navegador no es lo que se acaba de crear en el Zend Studio o programa elegido. Bueno, lo que pasa es que esto se lo tenemos que decir a nuestro amigo Apache. Recordemos que el servicio de apache esta a la escucha en el puerto 80 (http) y por lo tanto puede saber cuando viene una petición por misitiozend.com (por poner un ejemplo) y redireccionar a un determinado directorio, pero si no hay nada definido nos va a llevar a los que esta por defecto (localhost). Ok, veamos como enseñarle a Apache a realizar esta tarea.

sudo gedit /etc/apache2/sites-available/misitiozend.com

Esto nos abre un texto en blanco y según la documentación de ZendFramework es necesario poner algo como esto para nuestro apache:

<virtualhost *:80>
ServerName misitiozend.com
ServerAlias misitiozend.com
DocumentRoot "/home/gabriel/Documentos/Proyectos/empresa/public/"
SetEnv APPLICATION_ENV "production"
<directory "/home/gabriel/Documentos/Proyectos/empresa/public/">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</directory>
</virtualhost>


Bien, aclaremos un poco que es esto, En ServerName debe ir si o si el nombre de nuestro sitio web. En DocumentRoot la ruta exacta donde esta ubicado el proyecto y especificamente donde se encuentra el index.php de partida que por defecto el Zend Studio lo mete en una carpeta llamada public. La linea SetEnv APPLICATION_ENV define el entorno de programación que es muy útil pero de lo cual es necesario hablar a parte.

Ok, con esto uno podría decir, bueno ya esta ! pues no, so lo probamos nos daremos cuenta de que no. Primero una vez creado el archivo del que hablamos es necesario activarlo porque por el momento esta como "disponible" para hacerlo apache tiene un comandando especial.

sudo a2ensite misitiozend.com

Que lo que hace en realidad es hacer un enlace simbólico (como un acceso directo) en la carpeta:  /etc/apache2/sites-enabled.
Ok, pero faltan algunas cosas todavía, resulta que los proyectos de ZemdFramework funcionan con el módulo MOD_REWRITE en modo activado y para esto es necesario hacer:

sudo  a2enmod rewrite

Pero aun así, haciendo la prueba no veremos nada en el navegador, ni siquiera un error ! y es que tenemos desactivada la opción de mostrar errores en el php.ini

sudo gedit /etc/php5/apache2/php.ini

Buscamos la linea display_errors y la ponemos en On así: display_errors = On
De esta forma si reiniciaramos el apache y todo veríamos un error como este:

Warning: require_once(Zend/Application.php): failed to open stream: No such file or directory in /home/gabriel/Documentos/Proyectos/empresa/public/index.php on line 17 Fatal error: require_once(): Failed opening required 'Zend/Application.php' (include_path='/home/gabriel/Documentos/Proyectos/empresa/library:.:/usr/share/php:/usr/share/pear') in /home/gabriel/Documentos/Proyectos/empresa/public/index.php on line 17

Es que no le hemos definido a PHP donde va a estar ubicada la librería de zendframework. Por fortuna al instalar el paquete de zend-framework el archivo necesario fue creado pero no activado. Para eso hay que editar el siguiente archivo:

sudo gedit /etc/php5/conf.d/zend-framework.ini

Debemos descomentar una linea como esta
;include_path=${include_path} ":/usr/share/php/libzend-framework-php"
Le quitamos el ";" que esta por delante y guardamos.
Ahora si con esto solo no estaria haciendo falta reinicira el apache para que todos los cambios surtan efecto:

sudo service apache2 restart

Probando en el navegador con misotiozend.com debería aparecer el demo que nos trae ZendStudio.