Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

CRUD de symfony en aplicaciones reales

24 de agosto de 2015

Buenas tardes. Mi pregunta en esta ocasión trata sobre el comando CRUD de Symfony.

¿En una aplicación real y bien estructurada se suele utilizar el CRUD o lo creas todo a tu gusto y manualmente para cada entidad que lo necesite? Entiendo que hay que modificar si o si parte del código que te genera como son las plantillas por ejemplo.

En mi caso tengo 7 entidades y tendría que escribir y repetir prácticamente el mismo código para cada entidad y querría saber la forma mas correcta de hacerlo.

Por otra parte, no sigue bastantes de las buenas prácticas. En GitHub he visto que están adaptándolo y espero que esté listo pronto.

Un saludo.


Respuestas

#1

Hola:

Te cuento mi experiencia personal. Yo tengo un CRUD para mi backend que es una única clase para controlar todas las entidades, con 8 acciones.

  1. Portada
  2. Listar
  3. Crear
  4. Editar
  5. Borrar
  6. Cambio de estado
  7. Cambio de posición
  8. Creación y edición de las traducciones

Todas las acciones, menos la portada, tienen 2 rutas:

  1. Entidades "solitarias": Tipo los usuarios, las newsletter, los menús, las secciones, etc
  2. Entidades complejas : El contenido de las secciones y de las noticias.

Hace poco he terminado de reformar el CRUD para que sea lo más vainilla posible con la ayuda de un servicio, que es la que me busca las entidades, me las guarda, me modifica campos de los formularios, etc

¿Como funciona?

Pues es muy sencillo, en la ruta le indico la entidad a modificar y como cada entidad es un servicio en la configuración de canda entidad le indico las peculiaridades de la misma, como por ejemplo si hay que añadirle alguna relación como por ejemplo el grupo de los usuarios, que también lo indico por la ruta. Lo junto todo, lo paso por una ALC configurada con un VOTER y ya tengo el backend.

Visto así, puede sonar una chapuza (las primeras versiones lo eran) ahora he conseguido que con una clase, 14 rutas, 6 acciones y 3 plantillas pueda modificar cualquiera de las entidades de mi base de datos. Tengo que seguir unas reglas para poder crear las entidades, pero funciona y va bastante bien.

La próxima refactorizacion va ser para las plantillas porque aun siguen teniendo mierda para aburrir

@TsubasaAkai

25 agosto 2015, 0:28
#2

Hola, yo creo que no hay necesidad de que hagas algo que ya está hecho.

Entiendo tu inquietud de generar x numero de plantillas y editar una a una, al final tendrás código muy similar en ellas.

Lo mejor es usar un bundle que se encargue del backend de tu aplicación, por ejemplo puedes usar EasyAdminBundle si quieres algo sencillo, o SonataAdminBundle que es un poco más complejo.

Ambos son muy buenos y no te generan plantillas adicionales, ni controladores, claro, si quisieras personalizar plantillas y demás, lo puedes hacer.

@ramiroanacona

25 agosto 2015, 5:26
#3

Antes que nada, comentar que soy el principal responsable del bundle EasyAdminBundle que han mencionado antes, por lo que mi respuesta no va a ser objetiva.

En mi opinión, si a priori sabes que tu backend va a ser muy complejo y define un workflow muy personalizado, tienes que hacerlo a mano. En ese caso te puede venir bien el comando para generar el esqueleto del backend, aunque luego no se si aprovecharías mucho de su código.

Sin embargo, si de primeras sabes que tu backend es muy sencillo y sigue fielmente el funcionamiento de un CRUD, entonces no veo lógico programarlo a mano. Si ya existen bundles muy probados que te dan todo esto hecho, ¿para qué vas a perder tu tiempo haciéndolo a mano? Por eso te recomendaría que probaras primero EasyAdminBundle, ya que en menos de 5 minutos vas a poder instalarlo y probarlo bien. Así sabrás si te va a servir o no. Si no te sirve o no te gusta, te aconsejo que pruebes entonces SonataAdminBundle.

@javiereguiluz

25 agosto 2015, 8:12
#4

Buenos días y gracias por responder.

Lo siento pero creo no me he explicado bien jejeje, el CRUD sería en el frontend, el usuario tiene mucha información de diferentes entidades y tiene que poder realizar todas las operaciones con ellas.

@nonio_87

25 agosto 2015, 8:31
#5

Me resulta un poco raro el concepto de crear un CRUD para una aplicación frontend. ¿Quieres decir que la aplicación es totalmente pública? Si los usuarios que van a manipular la información son un grupo reducido de gente, entonces sí que estarías haciendo un backend, aunque lo llamemos de formas diferentes.

@javiereguiluz

25 agosto 2015, 9:39
#6

Es un crm muy simple y los usuarios que el admin registre pueden manipular la información.

Creo que voy ir escribiéndolo todo a mano ya que va a ser un copiar y pegar cambiando alguna consulta y vista, mi principal preocupación era la repetición de código similar, pero veo que es lo normal.

Muchas gracias.

@nonio_87

25 agosto 2015, 12:11
#7

Yo en mi caso lo tuve que hacer a mano porque ,mi workflow es muy particular, pero para lo que quieres tu el de Eguiluz te llega y te sobra.

@TsubasaAkai

25 agosto 2015, 12:33
#8

@TsubasaAkai comparte tu crud :D

@cristian_angulo

25 agosto 2015, 15:48