EasyAdmin, el nuevo admin generator de Symfony
¿Cuántas veces has necesitado un backend, aunque fuera sencillo, para tus aplicaciones Symfony? ¿Cuántas veces has usado o intentado usar el proyecto Sonata? ¿Cuántas veces te has desesperado usándolo? Para la mayoría de programadores que conozco, la respuesta a las tres preguntas es la misma: "casi siempre".
En mi caso personal, dispongo de muchos pequeños proyectos programados con Symfony y a la hora de pensar qué hacer con el backend, siempre tenía las mismas dudas y problemas. Así que hace poco decidí acabar para siempre con esta situación y me lancé a desarrollar EasyAdmin, el nuevo (y sencillo) "admin generator" para aplicaciones Symfony.
Personalmente, estas son las cosas que me gustaría que tuviera un "admin generator" de Symfony (y por eso son también las ideas que me han guiado al desarrollar EasyAdmin):
- Debe ser sencillo de instalar (menos de dos minutos, como verás a continuación).
- Debe funcionar bien a la primera sin tener que hacer cosas raras.
- Debe incluir todas las características esenciales de un backend sin tener que hacer nada (no quiero instalar "dependencias opcionales" para cosas tan básicas como el menú o el paginador).
- Debe ser visualmente agradable o al menos no ser feísimo (entre otras cosas, EasyAdmin es totalmente responsive).
- Debe estar documentado (y la documentación debe actualizarse continuamente).
Cómo probar EasyAdmin en tus proyectos
Instalar, configurar y probar el bundle EasyAdmin te va a llevar menos de dos minutos, así que me encantaría que lo probaras y me dijeras si realmente este "admin generator" es útil para ti:
Instalar EasyAdmin (tiempo estimado: 1 minuto)
1. Como sólo estamos probándolo, crea una nueva rama en tu proyecto:
$ git checkout -b probando_easyadmin
2. Instala el bundle:
$ composer require javiereguiluz/easyadmin-bundle
3. Activa el bundle en el kernel de tu proyecto:
// app/AppKernel.php class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new JavierEguiluz\Bundle\EasyAdminBundle\EasyAdminBundle(), ); } }
4. Carga las rutas del bundle:
# app/config/routing.yml easy_admin_bundle: resource: "@EasyAdminBundle/Controller/" type: annotation prefix: /admin # ...
5. Instala los archivos CSS y JavaScript utilizados por la interfaz del bundle:
$ php app/console assets:install --symlink
Crear el primer backend (tiempo estimado: 30 segundos)
1. Abre el archivo de configuración de tu proyecto y pega lo siguiente:
# app/config/config.yml easy_admin: entities: - AppBundle\Entity\Cliente - AppBundle\Entity\Pedido - AppBundle\Entity\Producto
Lo único que tienes que hacer es cambiar estas tres clases por las clases de las entidades que quieres gestionar mediante el backend. No importa cuántas entidades tengas, ni cómo se llamen ni dónde las guardes.
2. ¡Tu backend ya está listo! Sólo tienes que entrar en la URL /admin
de tu proyecto. Verás algo como lo siguiente:
Siguientes pasos
En una aplicación real, seguramente necesitarás configurar algunas de las características del backend. Consulta la documentación de EasyAdminBundle para saber cómo hacerlo.
EasyAdmin es un proyecto muy reciente, por lo que su actividad de desarrollo es frenética. Si quieres seguirlo más cerca y colaborar en su desarrollo, entra en el repositorio github/easyadmin-bundle. Y no olvides pinchar el botón "Star" de GitHub para mostrar tu apoyo al proyecto.
Comentarios
-
#1
Genial, siempre quise algo así para la administración. Algo realmente sencillo. El Sonata nunca me ha gustado y mi mejor opción era usar SyliusResourceBundle y como quiera tirar el código restante. Espero mejoras...voy probrando.
-
#2
Muchas gracias por este gran aporte, no lo he probado aun pero estoy seguro que sera de gran ayuda... Si lo hiciste tu seguro va a resolver todas esas dudas que teniamos al momento del backend, y eso de que no quiero nada complicado para el menu o paginacion resume todo.
Gracias.
-
#3
He estado jugando un rato con EasyAdmin y es un excelente trabajo. A ver si dentro de poco no tendremos nada que envidiar al "django admin generator".
-
#4
Muchas gracias por éste y todos tus aportes.
-
#5
Qué buena pinta tiene! Habra que trastear un poco con él. Muchas gracias!
-
#6
Enhorabuena por esta grandísima iniciativa. Se esperaba con creces un admin generator más simple que sonata-project y más completo que el generate-admin del framework... Estoy seguro de que tendrá éxito mientras el bundle se mantenga sencillo a la par de flexible. Me ha gustado mucho y espero que poco a poco vaya ganándole terreno a los ya conocidos.
-
#7
Muy buena iniciativa Javier de verdad que esto era necesario. Ahora solo hace falta un EasyUserAdministrator jajaja... Esas mismas preguntas del principio me las hago con FOSUserBundle.
-
#8
Genial, mil gracias, qué falta hacía. Voy a probarlo!
-
#9
Muy bueno, esta semana lo pruebo. Se me vienen algunas cuestiones:
- Qué ocurre al cambiar las entities? Hay que regenerar? Y en este caso:
- Es sencillo de extender en funcionalidad?
-
#10
hola Javier saludos y exitos y gracias por este trabajo que realizas, al instalar tengo un problema, los 5 pasos las realizo bien el problema que tengo es en; Crear el primer backend, parte uno podrias explicar. Me sale el siguiente error. Class 'AppBundle\Entity\Blog' does not exist
-
#11
Jose Ignacio: no hace falta regenerar nada. En la configuración del bundle hay que indicar las entidades que quieres gestionar a través del mismo, así como por ejemplo los campos que se muestran en el listado... Si redefines una clase como mucho tienes que cambiar dicha configuración.
-
#12
Wao, que bien!!!. He utilizado SonataAdminBundle en varios proyectos y es cierto que tiene sus ventajas y desventajas. Como desventajas creo que es un poco difícil de instalar y requiere muchas dependencias, hay que crear y configurar una clase por cada entidad que queremos administrar y también un servicio, sí bien es cierto que la documentación hay mejorado todavía hay aspectos y funcionalidades que no cuentan con ella y es un poco engorrosa para personalizar (aunque en algunos casos me he visto en la necesidad de personalizar casi al extremo y he podido, todo está en investigar bien). Como ventajas encuentro algunas como los filtros configurables, la exportación en diferentes formatos, el soporte para relaciones de todo tipo Many-to-Many, Many-to-One, One-to-Many, etc. No he probado todavía este bundle pero por lo que he leído creo que me va a gustar más que el SonataAdmin. Aunque le agradezco mucho a este último por sacarme de apuros en las ocasiones en las que el cliente me pedía un backend "rápido", "con calidad" y con "buen diseño".
-
#13
Esta muy bien el bundle bastante sencillo y fácil de extender que es lo más importante...Es bien rápido también, aunque falta probarlo con las entidades relacionadas a ver que tal va...Un saludo desde Cuba...
-
#14
Lo he probado ya con entidades Uno a Mucho y funciona perfectamente. Solo echo de menos la acción delete desde el listado de las entidades, sólo está el de editar. Muchas gracias por este gran aporte. Creo que será mi generador de backend favorito
-
#15
Me ha encantado, qué gran trabajo (de nuevo) Javier! Por cierto, tienes pensado incluir filtros (o ya los has incluido y no los veo)? gracias por tus aportes
-
#16
Lo he probado y está muy bien... lo que estamos buscando siempre... Muchas gracias
-
#17
Muy bien, para mi gusto solo faltaría un formulario de filtrado por los campos de las entidades.
-
#18
Hola Javier, fijate que cuando voy a la URL /admin, Me sale el siguiente error. Class 'MiBundle\Entity\Cliente does not exist
-
#19
Hola Rolando, es posible que tu problema este en la ruta, seguramente tu pones:
MiBundle\Entity\Cliente
y tendras un directorio superior del proyecto, por ejemplo:
Acme\MiBundle\Entity\Cliente
Espero haberte ayudado.
Javier, magnifico trabajo. Muchas gracias.
-
#20
Muy currado! Estoy intentando usarlo con el famoso FOSUserBundle, pero no consigo configurar el controlador de manera que cuando creo un nuevo usuario me codifique la contraseña en la base de datos igual que se hace desde el propio FOSUserBundle. Ademas el campo "last_login" me aparece como "Inaccesible". He intentado ponerle el Type, añadirle formato, pero sigo sin poder verlo.
-
#21
Hola Javier, un gran trabajo, de calidad no esperaba menos de ti, pero me encontré con una duda, como puedo hacer para generar formularios dinámicamente al dar el evento change de un select, por ejemplo en el caso por ejemplo si quisiera cargar los ubigeos de un país, soy de Peru (Departamento, Provincia, Distrito), que se vayan cargando conforme vaya cambiando los select.
Muchas gracias, sin duda un excelente trabajo y mucho más fácil que Sonata admin bundle, que este tiene un procedimiento algo complejo al cargar dinámicamente formularios, pero foreando un poco y leyendo la documentación se puede hacer, pero quisiera que en tu bundle puedas contemplar la carga dinámica de formulrarios con tu visión super sencilla e intuitiva, que en verdad a muchos nos rompe la cabeza =).
Estoy gozoso de usarlo y compartir mis experiencias, te felicito !!!!
-
#22
Gracias por este trabajo,solo una pregunta como puedo cambiar los labels y ponerle otro nombre porque me sale, por ejemplo action.list,action.show etc...
-
#23
Buenas Javier, Muchísimas gracias por este gran aporte a la comunidad. ¡ Esta muy bien ! No se porque pero no me deja sobrescribir los controladores para agregar funcionalidades nuevas. Le adjunto el codigo:
use JavierEguiluz\Bundle\EasyAdminBundle\Controller\AdminController as EasyAdminController;
class AdminController extends EasyAdminController { public function invitationAction() {
}
}
Y me da este error: FatalErrorException: Error: Call to undefined method JavierEguiluz\Bundle\EasyAdminBundle\Controller\AdminController::invitationAction()
-
#24
¡Ya esta solucionado! Gracias.
-
#25
Tiene unos problemas con safari el css http://i.imgur.com/w0hFdUv.png Barra lateral la etiqueta a no muestra, en otro navegadores si.
Y por cierto mu bien sistema me gusto
-
#26
Gran trabajo Javier.
-
#27
Después de trastear con él solo echo en falta poder subir/modificar campos de imágenes. Por lo demás genial.
-
#28
Formidable, Javier! Y me sacas de un gran apuro en la vida real, mil gracias! Tu sabes que todos los proyectos y sobre todo para las empresas para hoy son tarde, y aunque tu genial libro junto con las "buenas practicas" me han servido como nunca antes, ahora con esta ayuda tengo el tiempo para enfocarme en temas mas inmediatos para mi cliente!! Este era nuestro sueño y... Voila!
-
#29
Excelente aporte! soy nuevo en symfony y este es el primer bundle que me descargo y me va de maravilla.. poco a poco lo estudiare mas para poder sacarle todo el potencial... muchas gracias
-
#30
Muy buen trabajo con este bundle. En cuanto a la instalacion chapó, facil y rápida. La interfaz esta muy bien. En cuanto al desarrollo sería de agradecer que fuera capaz de cargar tablas con clave primaria compuesta. Gracias por realizar este aporte a la comunidad ;)
-
#31
Hola, que bueno que exista esta bundle! gracias.
Estoy utilizando JMSTranslationBundle para el manejo de traducciones. Hay alguna forma de integrarlo al easyadmin, por lo menos para el control de credenciales y el menú?
Gracias, 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 forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.