Desarrollo web Symfony2

De WikiSalud
Saltar a: navegación, buscar

Contenido

Fundamentos del Módelo MVC

Modelo Vista Controlador (MVC) es un patrón o modelo de abstracción de desarrollo de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de negocio en tres componentes distintos.

Descripción del módelo

  • Modelo: representa el dominio de los datos. Define la lógica de negocio (la base de datos pertenece a esta capa).
  • Vista: es la interfaz de usuario.
  • Controlador: es el responsable de ejecutar las peticiones del usuario. Es el que invoca peticiones al modelo y llama a las vista.

El flujo que se sigue es el siguiente:

  1. El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón, enlace, etc.)
  2. El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos.
  3. El controlador accede al modelo (ya sea para insertar, actualizar, eliminar o consultar los datos) de forma adecuada a la acción solicitada por el usuario.
  4. El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se reflejan los cambios en el modelo.
  5. La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.
Modelo-Vista-Controlador

Modelo MVC en Symfony2

Cuando un usuario solicita a cierta aplicación web ver el sitio, internamente sucede lo siguiente:

  1. El sistema de enrutamiento determina qué Controlador está asociado con la página inicial del sitio.
  2. Symfony2 ejecuta el Controlador asociado a la portada. Un controlador no es más que una clase PHP en la que puedes ejecutar cualquier código que quieras.
  3. El Controlador solicita al Modelo los datos de la oferta del día. El modelo no es más que una clase PHP especializada en obtener información, normalmente de una base de datos.
  4. Con los datos devueltos por el Modelo, el Controlador solicita a la Vista que cree una página mediante una plantilla y que inserte los datos del Modelo.
  5. El Controlador entrega al servidor la página creada por la Vista.

A pesar de que puedes llegar a hacer cosas muy complejas con Symfony2, el funcionamiento interno siempre es el mismo:

  1. El Controlador manda y ordena
  2. El Modelo busca la información que se le pide
  3. La Vista crea páginas con plantillas y datos.
MVC-Symfony

Instalando los elementos necesarios

Véase Preparando el entorno de desarrollo

Instalando Symfony2

Para iniciar con la instalación, descargar Symfony de su página oficial Symfony2. Para realizar un proyecto con Symfony2 hay dos formas de hacerlo:

  1. De forma manual.
  2. Desde el IDE de desarrollo NetBeans (esta es la opción recomendada y es con la que se trabajará en este caso).

De Forma Manual

Descomprimir el archivo que se descargó de la página oficial en el /home del usuario con que se trabajará y renombrar la carpeta con el nombre de la aplicación a construir.

Desde el IDE de desarrollo NetBeans

Configuración del IDE

Primero se debe configurar NetBeans para que se pueda crear el proyecto; buscar en la barra de herramientas la opción Tools -> Options Aparecerá la siguiente ventana
Opciones de NetBeans
Seleccionar la opción PHP y dirigirse a la pestaña Symfony2, aquí se buscará el archivo .zip que se descargó de Symfony2, cuando se encuentre hacer clic en Abrir. Al realizar esta acción en la caja de texto Symfony aparecerá la ruta del archivo como se muestra en la siguiente imagen:
Opciones de PHP->Symfony2

Cuando la ruta del archivo ya se muestre en la caja de texto hacer clic en OK. Con estos pasos ya se configuró el IDE para iniciar con la creación del sitio con Symfony2.

Creación del proyecto

A continuación se describen los pasos para crear un nuevo proyecto en Symfony:

  • Buscar en la barra de herramientas la opción File -> New Proyect.... Al hacer esto aparecerá la siguiente ventana:
    New Proyect

NetBeans permite crear tres tipo de proyectos PHP:

  1. PHP Aplication: creará un proyecto PHP vacío con las especificaciones básicas para trabajar con PHP5.
  2. PHP Aplication with Existing Sources: creará un proyecto en base a alguna aplicación previamente configurada.
  3. PHP Aplication from Remote Server: creará un proyecto desde un servidor remoto.

Seleccionar PHP Aplication ya que se creará una aplicación Symfony con los elementos básicos de este Framework.

  • Escribir el nombre que tendrá el proyecto que se creará y seleccionar la ruta en donde se construirá la aplicación. Generalmente, cuando se esta en la etapa de desarrollo se crea el sitio en /home/usuario hasta que se finalice con la etapa de desarrollo. También se debe seleccionar la versión de PHP a utilizar, en este caso se trabajará con la versión 5.3.3-7 que es la ultima versión que se encuentran en los repositorios de Debian Squeeze. Además se debe de seleccionar el tipo de codificación a utilizar en la aplicación, se utilizará UTF-8. La ventana deberá quedar como se muestra en la siguiente imagen:
    Name and Location
    Al finalizar la configuración de esta ventana, hacer clic en Next.
  • En la siguiente ventana se configura el servidor web en donde se ejecutará la aplicación y en la URL que se utilizará para realizar las pruebas. Esta parte se configurará más adelante cuando se realice la configuración de Virtual Host así que por el momento quedará con la configuración predeterminada como lo muestra la siguiente imagen:
    Run Configuration
  • En esta ventana, seleccionar el Framework a utilizar y aparecerán todos los frameworks que NetBeans tenga configurado. Como este ejemplo es basado en Symfony2 seleccionar este Framework y hacer clic en Finish.
    PHP Frameworks
  • Al hacer esto se creará el proyecto PHP5 con el Framework Symfony2, el proyecto se podrá visualizar en la ventana Proyects al lado izquierdo del área de trabajo.
    PHP Frameworks

Actualización de dependencias de Symfony2

  • Como usuario root instalar curl.
    aptitude install curl
  • Como usuario normal en la carpeta del proyecto creado anteriormente, descargar composer.phar.
    curl -s https://getcomposer.org/installer | php
  • Instalar los vendors de Symfony2.
    php composer.phar install
Para actualizar los vendors se ejecuta la siguiente instrucción en la carpeta del proyecto.
php composer.phar update
Para actualizar composer.phar se ejecuta la siguiente instrucción.
php composer.phar self-update

Permisos a las carpetas cache y logs

Para realizar los permisos de las carpetas se hará con ACL. Las ACL son listas de control que tienen todos los objetos del directorio y que permiten establecer permisos de las diferentes propiedades de estos objetos concediendo o denegando el acceso a la modificación de estas a los diferentes usuarios o procesos del sistema. Para su instalación, como usuario root escribimos en consola:

aptitude update
aptitude install acl

Esto, actualizará la lista de paquetes y luego instalará el paquete acl. Para dar los permisos a la carpetas cache y logs se debe hacer lo siguiente:

  • Editar como usuario root el archivo /etc/fstab, ya sea con vi o nano, buscar la línea en donde se encuentra la partición en donde esta el proyecto Symfony que estamos configurando. Si el proyecto se encuentra en el home del usuario, la línea se verá similar a la que se muestra a continuación:
# /home was on /dev/sda6 during installation
UUID=251157eb-2319-44c3-a617-bb61f4eb72da /home           ext3    defaults        0       2

Agregar en las opciones la palabra acl para poder aplicar ACL al directorio del proyecto, como se muestra en la siguiente línea:

UUID=251157eb-2319-44c3-a617-bb61f4eb72da /home           ext3    defaults,acl        0       2
  • Remontar la partición que se acaba de modificar. Ejecutar en consola como usuario root:
/bin/mount -o remount /home
  • Desde consola, dirigirse a la raíz del proyecto Symfony creado. Ya dentro del directorio ejecutar como root:
rm -rf app/cache/*
rm -rf app/logs/*

La instrucción anterior elimina algún archivo que pueda estar creado dentro de las carpetas cache y logs. Dar los permisos de lectura, escritura y ejecución al usuario de apache y al usuario con que se trabajará, para ello ejecutar las siguientes órdenes como usuario normal:

setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs

Configurar Apache

Véase Virtual_Host.

NOTA: El DocumentRoot debe ser /home/usuario/NombreProyecto/web ó si esta dentro de 
NetBeans /home/usuario/NetBeansProjects/NombreProyecto/web

Después de configurar el Virtual Host, si se configuró por IP se debe realizar un cambio en Symfony para que el sistema pueda ejecutarse de forma correcta. Si se intenta ejecutar la aplicación con la url: http://hr.localhost/app_dev.php aparecerá el siguiente error:

Error de ejecución

Para poder corregir este error, abrir el archivo app_dev.php (En cualquier editor o en Netbeans) que se encuentra ubicado dentro del directorio web del raíz del proyecto. Dentro de ese archivo, buscar las siguientes líneas:

if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !in_array(@$_SERVER['REMOTE_ADDR'], array(
        '127.0.0.1',
        '::1',
    ))
)

Proceder a agregar la IP que se coloco en el virtual host seguido del 127.0.0.1, así como se muestra a continuación:

if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !in_array(@$_SERVER['REMOTE_ADDR'], array(
        '127.0.0.1','127.0.0.3',
        '::1',
    ))
)
No olvidar colocar la IP entre comillas simples y coma al final de la IP.

Recargar la aplicación que se esta ejecutando en el navegador y aparecerá la siguiente página:

Symfony - Welcome

Cambiar URL de prueba en NetBeans

Ya que se tiene configurado el Virtual Host dentro del proyecto NetBeans, dar clic derecho sobre el nombre del proyecto y seleccionar la opción properties. Aparecerá la siguiente ventana:

Properties

Seleccionar la opción Run Configuration y en la opción Proyect URL colocar la URL con la que se hizo la prueba anterior. Como ejemplo se pondrá la que se muestra en la siguiente imágen.

Properties-Run Configuration

Al terminar dar clic en OK y para realizar la prueba dar clic en el botón Run Project o presionar F6 y deberá aparecer la siguiente imagen:

Symfony - Welcome


1. Desarrollo_web_Symfony2_parte_2

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas