Cupon, una nueva aplicación de ejemplo de Symfony2
La mejor forma de aprender a programar con Symfony2 es jugar con una aplicación real ya desarrollada. A pesar de su reciente lanzamiento, ya existen varias de estas aplicaciones:
- Desymfony, desarrollada por los ponentes de las Jornadas Symfony 2011, y que se trata del sitio web ficticio de las propias jornadas. Esta aplicación es tan sencilla, que seguramente es la mejor para los que están empezando con Symfony2 y no saben nada todavía.
- LiveChat, desarrollada por ServerGrove, que es una aplicación para añadir a tu sitio web chats en tiempo real para dar soporte técnico y comercial a los visitantes del sitio. Esta es probablemente la mejor y más completa aplicación disponible actualmente.
- KnpIpsum, desarrollada por KnpLabs, que no es exactamente una aplicación completa de ejemplo sino un tutorial compuesto por varios pequeños ejemplos prácticos relacionados.
- Lichess, desarrollada por Thibault Duplessis, que es una aplicación que actúa de servidor de juegos de ajedrez. Soporta cientos de partidas simultáneas y permite jugar a dos jugadores entre sí o contra la máquina, mediante un sistema de inteligencia artificial.
- Symfony2Bundles, desarrollada por KnpLabs, y que es el código fuente del sitio symfony2bundles.org
- symblog, desarrollado por un programador que se hace llamar dsyph3r, y que es una aplicación + tutorial que muestra cómo crear un blog completo con Symfony2
A todas estas aplicaciones se suma a partir de hoy la aplicación Cupon. Se trata de una aplicación de ejemplo desarrollada con Symfony2 e inspirada en el sitio web Groupon, de ahí el nombre. Esta aplicación es la base que estoy utilizando para escribir el libro sobre programación con Symfony2 que publicaré próximamente.
La aplicación es bastante completa, ya que además de cubrir todos los conceptos básicos sobre Symfony2:
- Hace un uso avanzado del sistema de seguridad, incluyendo el uso de una ACL
- Configura varios servicios mediante el contenedor de inyección de dependencias
- Define tres áreas diferentes en la aplicación: frontend, extranet y backend
- Define unas fixtures bastante avanzadas
- Hace un uso extensivo de formularios
- Define entidades complejas con varios mecanismos de validación diferentes
- Incluye algunos test unitarios y funcionales de prueba
- Muestra un ejemplo de cómo internacionalizar la aplicación
- Cuida el rendimiento de la aplicación mediante la caché de HTTP y ESI
Si quieres probarla, sigue las instrucciones de instalación que encontrarás en el propio repositorio de la aplicación. Si sólo quieres echar un vistazo al código, accede a su repositorio oficial: https://github.com/javiereguiluz/Cupon Y si te gusta, no te olvides pinchar en el botón de Watchers de github, así podré saber a cuánta gente le interesa la aplicación.
Comentarios
-
#1
Tiene muy buena pinta. Excelente idea. Estoy deseando de ver ese libro publicado. ¡Gracias Javier!
-
#2
También ansioso por ver el libro! Muchas gracias por tu aporte. Saludos.
-
#3
Me alegro que hayas vuelto Javier con publicaciones en el blog. Muy interesante y espero ver el libro pronto.
-
#4
Excelente! Qué ganas de leer el libro y a ver si se convierte en la referencia de aprendizaje de sf2 que necesitamos!
-
#5
Enhorabuena Javier, estoy deseando de que salga en libro, :). Sólo por curiosidad, ¿iniciativa propia o encargo de Sensio Labs?
-
#6
@Javier, por iniciativa propia :)
-
#7
Perfecto! Enhorabuena Javier!
Solo añadir de tu lista Symblog : https://github.com/dsyph3r/symblog (con su tutorial : http://tutorial.symblog.co.uk/) Todas estas aplicaciones son super importantes para el crecimiento de la communidad; yo creo que fue gracias a Askeet, Jobeet y el Admin Geneator que symfony 1.X fue tan popular! Como sensio no tiene pensado hacerlo para Symfony 2, bienvenidas sean esas iniciativas! :)
Gracias!
-
#8
Gracias por el código Javier, ahora a esperar el libro que caerá en mis manos, si o si :)
-
#9
Que grande! Muchas gracias por el post. Aquí tienes un lector seguro de ese próximo libro. Suerte con él y que podamos tenerlo lo más pronto posible entre las manos :)
-
#10
En Castellón me pareciste un CRACK, y este tipo de cosas las corrobora. ¿Para cuando el libro? ¿Físico, electrónico o ambos? ¿Habrá tutorial para Navidad tipo Jobeet?
-
#11
@Chechu muchas gracias por lo que dices :)
El libro se publicará en papel y en electrónico. Sobre el tutorial de Navidad, si lo dices por mi, no tengo pensado hacerlo. Si lo dices por el sitio web oficial y Fabien y compañía, pues no he oído nada al respecto :(
-
#12
No sé de dónde sacas el tiempo para todo esto, pero chapeau! Me voy a tener que leer tu libro sobre productividad definitivamente :)
Enhorabuena por la aplicación Cupon, la temática es un gran acierto. La tengo que probar, ya te contare!
-
#13
Hola javier, en hora buena por la aplicación.
Estoy realizando todo lo que pones en la ayuda para instalar la aplicación y cuando intento limpiar la caché obtengo el siguiente error.
[Symfony\Component\DependencyInjection\Exception\InactiveScopeException]
You cannot create a service ("request") of an inactive scope ("request").Cual pudiera ser el problema
Saludos y gracias desde ya.
-
#14
Luis Enrique, con la información que me das no sabría decirte cuál es el problema. Si puedes, prueba a borrar la cache a mano, destruyendo todos los archivos y carpetas que haya dentro del directorio app/cache. Luego pon los permisos bien y vuelve a ejecutar la aplicación a ver si se te crea bien la cache.
-
#15
Yo sigo programando con Sf 1.4 porque me parece un framework genial y muy bien documentado que ahora mismo colma todas mis necesidades. De todas maneras estoy interesado en probar los avances de Sf2, a pesar de que he oído que es tan distinto del 1. Aprender Sf2 es programar en un nuevo paradigma más avanzado. Gracias a todos.
-
#16
Muxas gracias !! por la informacion,
-
#17
A propósito, ¿hay fecha prevista de publicación? ¿Dónde se podrá conseguir? La transición del 1.4 a 2 es más compleja de lo previsto, y seguro que esta guía nos va a ayudar a más de uno. Impaciente estoy...
-
#18
Chechu71, no me atrevo a dar una fecha sobre su posible publicación porque estas cosas se pueden retrasar fácilmente.
Lo que sí que puedo decir es que estoy trabajando en el libro día y noche y quiero publicarlo lo antes posible :)
-
#19
Gracias la verdad ! estas son las cosas por la que el Software Libre tiene futuro ;). Crack, A esperar el Libro !
-
#20
hola javier
mira segui todos los pasos en la instalacion de tu aplicativo pero al ejecutar la linea
php app/console assetic:dump --env=prod --no-debug
me sale el siguiente error
Call to undefined function Doctrine\Common\Cache\apc_fetch() in /Applications/MAMP/htdocs/Cupon/vendor/doctrine-common/lib/Doctrine/Common/Cache/ApcCache.php on line 60
podrias ayudarme por favor a solucionar este error
gracias, y sigue adelante...
-
#21
El error seguramente se produce porque no tienes instalado APC en el ordenador en el que estás probando la aplicación.
El punto 7 de las instrucciones de instalación indica que APC debe estar instalado para probar la aplicación en producción.
Si no puedes instalar APC en ese equipo, simplemente no pruebes la aplicación en producción :)
-
#22
Hola a todos: agradecería enormemente si alguien me explicara como trabajar con el bundle para la conexión con Ldap de opensky o si tienen una aplicación de ejemplo que contenga este tipo de autenticación, pues llevo rato trabajando de hacer una aplicación que se autentique con ldap y no he conseguido nada.
gracias de antemano
-
#23
Genial esto.
Espero que sea en español, por que ando bastante pez, y la mayoría de doc que encuentro es en inglés o doc mal traducida.
Bien bien, esto tiene buena pinta! :)
-
#24
Hola a todos. Necesito ayuda. Hay alguna manera de bajar los ejemplos de Symfony2 que no sea por la via del github? Desde mi pais, CUBA, no he encontrado la manera de conectarme con ese sitio. Gracias
-
#25
Me sucede igual que a Carlos Luque. Estoy empezando a programar utilizando un framework en PHP y me decidí por Symfony porque parece ser el mejor y más documentado que existe, además, que gracias a Javier Eguliuz podemos contar con gran parte de esta documentación debidamente traducida al español (para los que no nos llevamos muy bien con el inglés). Descargué gran cantidad de libros y tutoriales, pero al querer probar las aplicaciones reales desarrolladas con el nuevo framework Symfony2, me dió error las tareas de clonación y o actualización que ejecuta git para descargar las librerias y clases. Me di cuenta que el error se debe a que el git necesita autenticación para poder acceder al repositorio del código ya que utilizo un proxy para acceder a internet. No sé si se pueda configuar el git para declararles mis credenciales del proxy o si se puedan descargar los paquetes completos de las aplicaciones de ejemplos. Gracias de antemano por la ayuda y esperaré con ansias el libro de Javier. Saludos desde Cuba.
-
#26
hola javier
mira segui todos los pasos en la instalacion de tu aplicativo pero al ejecutar la linea
php app/console assetic:dump –env=prod –no-debug
me sale el siguiente error
Call to undefined function Doctrine\Common\Cache\apc_fetch() in /Applications/MAMP/htdocs/Cupon/vendor/doctrine-common/lib/Doctrine/Common/Cache/ApcCache.php on line 60
pero ya active la extension php_apc utilizo wamp
saludos,
Percy Ameri
-
#27
esto me sale cuando instale symfony2
Welcome! Welcome to your new Symfony project. This script will guide you through the basic configuration of your project. You can also do the same by editing the ‘app/config/parameters.ini’ file directly. Configure your Symfony Application online Bypass configuration and go to the Welcome page Re-check configuration
-
#28
@Percy, el primer error que comentas es porque no tienes APC bien instalado y/o bien configurado.
@Percy, lo segundo que comentas es correcto cuando instalas Symfoyn2. Pero te recomiendo que sigas al pie de la letra las instrucciones de instalación de la aplicación.
-
#29
WOWWWW que proyecto!, gracias Javier, lo acabo de probar, muy buen proyecto. De aquí voy a poder obtener muchos tips para mi proyecto. Y ansioso estoy por ver el libro publicado.
Saludos!
-
#30
Que proyectazo !!
La verdad es que desde que estuve en Castellón me dejaste bastante impresionado con tus conferencias y me uno al comentario generalizado de que eres un crack !
Ahora vas a sacar un libro (espero en español ;)) sobre Sf2...deseando estoy!!!
Muchas gracias Javier.
-
#31
@Paco, muchas gracias por lo que dices :) En efecto el libro es en español. Aquí puedes ver un pantallazo de cómo va la cosa:
http://twitter.com/#!/javiereguiluz/status/129874259496550400/photo/1
-
#32
@Javier que precio mas o menos tendra el Libro? :( Hay personas pobres :D LOL que no podemos adquirirlo asi querramos
-
#33
Hola alguien me puede ayudar con un ejemplo utilizando ajax
gracias....
-
#34
Buenas, primero gracias por el libro, lo he comprado y lo esty leyendo. De todas maneras queria hacerles una consulta...
deseo correr la aplicacion Cupon y no logro crear el esquema de la base de datos ya que al hacer "php bin/vendors install" me da un error fatal al leer la linea 34 del appkernell.php (Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle). Me marca que no existe el directorio o algo asi. Dado a este error fatal no me deja crear el esquema de la db.
Tengo
Symfony 2.0.8 (Todo instalado, ningun error en la pagina de bienvenida.) PHP 5.3.8 (Apache + MySQL)
lo unico al hacer desde git "ssh [email protected]" me da un error de "permiso denegado" (publickey)
Quisiera saber si alguien puede decirme como proceder ya que estoy arrancando con symfony.
Muchas gracias !!!
-
#35
Juan Manuel, los errores de github + SSH desafortunadamente son bastante comunes. En la sección de documentación de Github tienen un documento que recoge todos los problemas habituales con SSH y su solución: http://help.github.com/ssh-issues/
Es posible que lo que comentas sea el segundo caso (Permission denied (publickey)) así que ya ves que sólo tienes que generar tus claves SSH y subirlas después de github.
-
#36
Javier, muchas gracias por la respuesta. He podido llegar bastante lejos, solucione los inconvenientes. De todas maneras he quedado trabado a la hora de crear el esquema de base de datos porque me dice que mysql agoto su tiempo. Error de conexion. Ahora voy a revisar el link en github/issues... Muchas gracias
-
#37
Buenas, Javier. Muchas gracias y enhorabuena por tu trabajo. En mi trabajo hemos comprado tu libro (versión-e) para iniciarnos en Symfony, y estamos utilizándolo como tutorial. Mi pregunta es si no podrías facilitar un dump de la BD de prueba, para evitar tener que lidiar con bastantes problemas que se dan al usar los Fixtures (en mi caso, en el de usuarios, sobre todo) Gracias.
-
#38
Carlos, muchas gracias por comprar el libro. Respecto a lo que comentas, ¿has visto las dos variantes de fixtures que existen? Hace unas semanas modifiqué las instrucciones de instalación en https://github.com/javiereguiluz/Cupon
Ahora hay dos fixtures, uno de ellos es básico y creo que es lo que estas buscando ahora mismo.
-
#39
Hola de nuevo, Javier. Pues el fixture básico me falla cuando llega a las ofertas. Cuando cargo los fixtures, no crea nada en la BD. He probado a comentar el bloque que crea las ofertas y las ventas (porque están relacionadas con las primeras) y entonces me crea bien las ciudades, las tiendas y los usuarios. Después descomento sólo el bloque de las ofertas y entonces no sólo no las crea, sino que elimina los datos de las tablas anteriores (ciudades, tiendas y usuarios). No sé qué hacer...
-
#40
No logro pasar de aqui: ubuntu 11.11
Notebook-PC:/var/www/cupon$ phpunit -c app PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/bin/phpunit on line 39
¿Puedes ayudarme con este problema?
-
#41
Pedro, ¿qué versión de PHPUnit utilizas? y sobre todo, ¿cómo lo has instalado?
Según me han contado, en algunas distribuciones de Linux da problemas instalar PHPUnit como paquete. Mejor instalarlo mediante PEAR:
$ pear config-set auto_discover 1 $ pear install pear.phpunit.de/PHPUnit
-
#42
Trabajo con Wamp (con la versión php 5.3.4) y me da el siguiente error php_ming.dll unvalid win32 extension
-
#43
He comprado el libro de Javier, estoy intentando instalar la aplicación Cupon, pero no consigo instalarla bien porque cuando ejecuto install vendors me dice que php_ming.dll no es válida para win32. Uso php 5.3.4
-
#44
@Diego, desactiva la extensión php_ming.dll en tu archivo de configuración php.ini. Y no olvides tampoco ejecutar el script check.php para que Symfony te diga todo lo que tienes que activar o desactivar o modificar para poder ejecutar bien Symfony2.
Y si sigues teniendo problemas para instalar la aplicación, es mejor que los reportes aquí: https://github.com/javiereguiluz/cupon/issues
-
#45
hola, disculpe no hay un foro o seccion especifica de preguntas sobre su aplicacion? es que estoy siguiendo los pasos del libro y me encontre con el siguiente error :
Item "nombre" for "" does not exist in OfertaBundle:Default:portada.html.twig at line 22 500 Internal Server Error - Twig_Error_Runtime
y aunque ya volvi a hacer todo desde 0 me sigue saliendo con la primera plantilla de la portada de cupon
-
#46
Hola Javier. Compré tu libro y tengo un problema para hacer funcionar a Cupon para Symfony 2.3, ya que cuando ingreso a http://cupon.local/app_dev.php la página esta en blanco. Seguí todos los pasos de Instalación y Uso como indicas en el libro y en el repositorio de Github. Uso Ubuntu 12.04, php 5.4, apache 2.2.22 y mysql 5.5.35. Mi VirtualHost es: <VirtualHost *:80> ServerName cupon.local ServerAlias www.cupon.local
DocumentRoot "/home/juan/Proyectos/cupon/web" DirectoryIndex app.php <Directory "/home/juan/Proyectos/cupon/web"> AllowOverride None Allow from All <IfModule mod_rewrite.c> Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L] </IfModule> </Directory> CustomLog /var/log/apache2/cupon.local-access.log combined KeepAlive On MaxKeepAliveRequests 200 KeepAliveTimeout 5 AddOutputFilterByType DEFLATE text/css text/plain text/html application/xhtml+xml text/xml application/xml <IfModule mod_headers.c> Header append Vary User-Agent env=!dont-vary ExpiresActive On ExpiresDefault "now plus 1 week" ExpiresByType image/x-icon "now plus 1 month" ExpiresByType image/gif "now plus 1 month" ExpiresByType image/png "now plus 1 month" ExpiresByType image/jpeg "now plus 1 month" </IfModule>
Cuando ejecuto php app/check.php esta todo OK y el archivo de log no me indica si hay un error.
-
#47
@Juan, eso es problema de permisos, fijate más adelante en el libro o en este enlace: http://symfony.com/doc/current/book/installation.html (sección: Setting up Permissions) ahí te dice como configurarlos para linux. saludos
Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente
unos meses después de su publicación para asegurar que estos sigan
siendo relevantes.
Proyectos Symfony destacados
La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.