javiereguiluz / Cupon

Aplicación de prueba para aprender a programar con Symfony2
Other
314 stars 160 forks source link

Aplicación de prueba Cupon para Symfony 2.8

Cupon es una aplicación de prueba desarrollada para aprender a programar con Symfony 2.8. Se trata de un clon simplificado de Groupon, de ahí el nombre. Esta aplicación es la base del libro Desarrollo web ágil con Symfony publicado por Javier Eguiluz.

Si descubres algún error, por favor utiliza la página de issues de Github para avisarnos.

Instalando la aplicación

En el libro Desarrollo web ágil con Symfony se expica detalladamente cómo instalar bien Symfony y la aplicación Cupon. A continuación sólo se indican los principales pasos necesarios.

En primer lugar debes tener Composer instalador globalmente. Si utilizas Linux o Mac OS X, ejecuta los siguientes comandos:

$ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer

Si utilizas Windows, descárgate el instalador ejecutable de Composer y sigue los pasos indicados por el instalador.

Una vez instalado Composer, ejecuta los siguientes comandos para descargar e instalar la aplicación Cupon:

# clona el código de la aplicación
$ cd proyectos/
$ git clone git://github.com/javiereguiluz/Cupon.git

# instala las dependencias del proyecto (incluyendo Symfony)
$ cd Cupon/
$ composer install

Probando la aplicación

La forma más sencilla de probar la aplicación, ejecuta el siguiente comando, que arranca el servidor web interno de PHP y hace que tu aplicación se pueda ejecutar sin necesidad de usar Apache o Nginx:

$ php app/console server:run
Server running on http://localhost:8000

Ahora ya puedes abrir tu navegador y acceder a http://localhost:8000 para probar la aplicación.

El comando anterior requiere PHP 5.4. Si utilizas una versión anterior de PHP, tendrás que configurar un virtual host en tu servidor web, tal y como se explica con detalle en el libro.

Solución a los problemas comunes

Al empezar a programar con Symfony, es común no saber la causa exacta de algunos de los errores que se producen. En estos casos es útil borrar la caché de la aplicación ejecutando los siguientes comandos:

Si aún así siguen persistiendo los errores, al principio también suele ser útil borrar completamente los directorios dentro de app/cache/ (por ejemplo con el comando rm -fr app/cache/*).

1. Si solamente ves una página en blanco, es posible que se trate de un problema de permisos. En el libro se explica detalladamente cómo solucionarlo, pero una solución rápida puede ser ejecutar el siguiente comando:

$ cd proyectos/Cupon/
$ chmod -R 777 app/cache app/logs

Si no te funciona esta solución, también puedes consultar el artículo Cómo solucionar el problema de los permisos de Symfony.

2. Si ves un error relacionado con la base de datos, es posible que tu instalación de PHP no tenga instalada o activada la extensión para SQLite.

Para facilitar la instalación de la aplicación, SQLite se usa por defecto. Si prefieres usar una base de datos como MySQL, sigue estos pasos:

  1. Edita el archivo app/config/parameters.yml comentando todo lo relacionado con SQLite y descomentando todo lo relacionado con MySQL.
  2. Edita el archivo app/config/config.yml y en la sección dbal, comenta todo lo relacionado con SQLite y descomenta todo lo relacionado con MySQL.
  3. Ejecuta los siguientes comandos para crear la base de datos y rellenarla con datos de prueba:
$ php app/console doctrine:database:create
$ php app/console doctrine:schema:create
$ php app/console doctrine:fixtures:load

# si este último comando da error, ejecuta en su lugar:
$ php app/console doctrine:fixtures:load --append

# si estás desarrollando la aplicación desde cero, ejecuta lo siguiente
# para cargar los datos de prueba simplificados que no utilizan la seguridad
$ php app/console doctrine:fixtures:load --fixtures=app/Resources

3. Si no puedes subir imágenes al crear una oferta

Asegúrate de que el directorio web/uploads/images/ tiene permisos de escritura.

Test unitarios y funcionales

La aplicación incluye varios test unitarios y funcionales de ejemplo. Para ejecutarlos debes tener la herramienta PHPUnit instalada. Después, ejecuta el siguiente comando en el directorio raíz del proyecto:

$ phpunit -c app

Frontend

Extranet

Backend