Symfony en NetBeans 6.8

 Ya sé que este blog se llama "Apuntes de Java", pero el objetivo es también dar apuntes sobre NetBeans (ya que también fue hecho en Java... y apoyo al proyecto)
Así que este post está referido al framework para PHP Symfony. Espero que les agrade

Symfony en NetBeans 6.8

(También se encuentra en la documentación de NetBeans: http://wiki.netbeans.org/NB68symfony_es)

Symfony es uno de los mejores frameworks para PHP que permite desarrollar aplicaciones web basado en MVC. Ayuda enormemente en la construcción de aplicaciones web complejas en PHP.
Aunque Symfony fue ideado para trabajar desde la línea de comandos, NetBeans 6.8 lo incluye dentro sus complementos a fin de ayudar al desarrollador en la elaboración de aplicaciones complejas.

Instalación del componente Symfony

La instalación es bastante simple. Se puede descargar desde el centro de actualización (Herramientas > Complementos). Debemos tener instalado el complemento para PHP. Si no lo tenemos instalado, este es el mejor momento para hacerlo.



... y si es la primera vez que instala el PHP, es probable que le pida la instalación del JavaScript Debugger






Lo dejamos que cocine, y cuando termine nos preguntará que si deseamos reiniciar el IDE. Y eso haremos: reiniciar el IDE.

Instalando Symfony

Ahora bien, lo que hemos instalado solo fue el complemento de NB para Symfony. Lo que debemos es instalar el mismo framework. Para ello debemos hacer lo siguiente
  1. Descargar symfony desde aquí http://www.symfony-project.org/installation/1_2
  2. Aunque existan las instrucciones de instalación que explica Symfony nosotros seguiremos nuestro propio rumbo. Extraeremos el contenido del .zip en c:\ de tal manera que se haya creado una carpeta llamada c:
    symfony-1.2.9
    . Cuando digo "contenido" me refiero a no usar la opción "descomprimir en symfony-1.2.9..." que consiste en crear una carpeta con el mismo nombre del .zip y dentro descomprimir el contenido del .zip. En su lugar, usar "descromprimir aquí..." (desde c:\).
Listo, eso es todo referente al Symfony.
Si ya has tenido instalado el Symfony en otro lado, no importa, igual sirve. Lo importante es recordar donde está.

Configurando el componente Symfony

Ahora, en el NetBeans entremos a Herramientas > Opciones y seleccionemos la opción "PHP". Luego, abrimos la ficha "Symfony". Lo que debemos hacer aquí es seleccionar el script principal de Symfony.




Notemos que es el archivo que no tiene extensión. Realmente (si lo abrimos desde un editor de texto) es un archivo .php, solo que no tiene extensión.

Creando un proyecto

Ahora, crearemos un nuevo proyecto PHP usando el Symfony. Presionemos Mayus+Ctrl+N (Archivo > Nuevo proyecto)


Clic en Siguiente. Establecemos el nombre del proyecto. Para nuestro ejemplo será MiApp






Dejamos las demás opciones por omisión. Clic en Siguiente
Establecemos la ruta que se mostrará en el navegador cuando ejecutemos la aplicación.


Clic en Siguiente.
Ahora, seleccionamos el framework "Symfony"




Notemos que está pidiendo una clave especial, por fines de seguridad para evitar ataques CSRF con tokens en formularios. Para fines de este tutorial, usaremos la misma clave propuesta: UniqueSecret.
Clic en finish
Dejemos que cocine nuevamente, y listo. Ya tenemos nuestro proyecto.

Preparando el proyecto

Configurando el Apache

Esta aplicación debe ejecutarse en el Apache Web Server que deberiamos tenerlo instalado. Lo que recomienda Symfony es ejecutar la aplicación de desarrollo en otro host. Este host será local y virtual, de tal manera que se ejecute bajo otro nombre de host y en otro puerto. En nuestro caso lo ejecutaremos en el puerto 9090 En el margen izquierdo de nuestro proyecto, abramos el archivo config/vhost.sample el cual tendrá un código similar a este:
# Be sure to only have this line once in your configuration
    NameVirtualHost 127.0.0.1:80

    # This is the configuration for MiApp
    Listen 127.0.0.1:80

    
      ServerName MiApp.localhost
      DocumentRoot "D:\home\DSILVA\Mis documentos\NetBeansProjects\MiApp\web"
      DirectoryIndex index.php
      
        AllowOverride All
        Allow from All
      

      Alias /sf "C:\symfony-1.2.9\data\web\sf"
      
        AllowOverride All
        Allow from All
      
    
Pues, lo que haremos primero será editar este archivo para que ejecute se ejecute en el archivo 9090, de la siguiente manera:
# Be sure to only have this line once in your configuration
    NameVirtualHost 127.0.0.1:9090

    # This is the configuration for MiApp
    Listen 127.0.0.1:9090

    
      ServerName MiApp.localhost
      DocumentRoot "D:\home\DSILVA\Mis documentos\NetBeansProjects\MiApp\web"
      DirectoryIndex index.php
      
        AllowOverride All
        Allow from All
      

      Alias /sf "C:\symfony-1.2.9\data\web\sf"
      
        AllowOverride All
        Allow from All
      
    
Las rutas de la carpeta del proyecto ya han sido establecidas por el Symfony. Ahora,
  1. copiemos este contenido,
  2. abramos el archivo httpd.conf que se encuentra en el directorio $APACHE_HOME\conf,
  3. pegamos,
  4. lo guardamos,
  5. y reiniciamos el servicio de Apache.
Para ver si se ha configurado correctamente el Apache, abramos el navegador en http://localhost:9090, o ejecutemos el proyecto con la tecla F6.


Configurando la base de datos

Ahora, nos toca crear la base de datos. Desde una consola de MySQL (puede ser útil el de la línea de comandos, o el más sofisticados que uses) ejecutemos (como root) lo siguiente:
create database tienda_virtual; #crea la base de datos
grant all on tienda_virtual.* to tienda_virtual@localhost identified by "tienda_virtual"; #crea un usuario con acceso a esa base de datos
Ejecutarlo desde el NetBeans también es más que suficiente.
Recomiendo que no se use el usuario root para acceder a una base de datos desde la aplicación. Por ello recomiendo crear un usuario por cada base de datos que se va a crear. Es por fines de seguridad.
A continuación, debemos establecer la configuración de nuestra aplicación con la base de datos. Para ello, hagamos clic derecho sobre el ícono del proyecto y seleccionemos Symfony > Run command...






Nos mostrará una consola especial para ejecutar los comandos de Symfony. En la entrada del filtro escribiremos "config" y se mostrarán los comandos asociados a configure. Seleccionamos de la lista a configure:database y escribimos como argumentos "mysql:host=localhost;dbname=tienda" tienda tienda




Luego, clic en "Run"
Podremos ver que se ha actualizado el archivo config/databases.yml

Creando las tablas

Las tablas se pueden crear desde el archivo config/schema.yml. Un archivo .yml es una serialización estándar y amigable para los lenguajes de programación. Tendremos dos tablas: tipo_producto y producto. Para ello, editaremos el archivo config/schema.yml con lo siguiente:
propel:
  tipo_producto:
    id_tipo: ~
    nombre_tipo: {type: varchar(255)}
  producto:
    id_producto: ~
    id_tipo: {type: integer,foreignTable: tipo_producto, foreignReference: id_tipo,required: true}
    nombre_producto: {type: varchar(255)}
    stock: {type: integer}
    precio: {type: double(10,5)}
Notar los espacios que hay entre cada declaración, tipo y el valor.
Ahora, haremos que el symfony cree las tablas. Para ello, desde la consola de symfony, buscamos filtramos los comandos propel:, seleccionamos propel:insert-sql






Con esto, creará el esquema para nuestra aplicación y también las tablas en nuestra base de datos






Si ya tienes una base de datos creadas, ignora la edición de config/schema.yml y ejecuta desde el symfony el comando propel:build-squema
Y para finalizar con la base de datos, debemos crear el modelo de datos, que consiste en un mapeo entre clases php con las tablas de nuestra base de datos. Para ello ejecutemos el comando propel:build-model
Después de ello, veremos el resultado en la carpeta lib






Vaya, hasta ahora no hemos escrito ni un archivo .php.

Ejecutando la aplicación

La aplicación no está del todo terminada. Faltan los estilos, colores, etc. Pero ya se puede ver algo. Antes de eso, debemos construir la aplicación. Para ello ejecutemos el comando propel:build-all. Con esto construye todo lo referente al esquema, hasta los formularios.




Luego, ejecutamos propel:generate-module con los parámetros como se ven en la imagen.




Y así tendremos el mantenimiento para la tabla "tipo_producto". Clic aquí para ver http://localhost:9090/frontend_dev.php/tipo










Finalmente

Como el fin de este tutorial no era un curso de Symfony, sugiero leer el manual práctico http://www.symfony-project.org/jobeet/1_2/Propel/es/ que en 24 dias (a razón de una hora cada día) uno puede hacer un proyecto funcional con Symfony.

Comentarios

Publicar un comentario

Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups


Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/

Entradas más populares de este blog

UML en NetBeans

Cambiar ícono a un JFrame

RESTful... la forma más ligera de hacer WebServices (Parte 1)