8

estoy usando Zend Framework y la doctrina en esta aplicaciónde diseño MVC pregunta

En mi aplicación web que tengo varios módulos individuales como eventos, conferencias, estudios de casos .. así que estoy haciendo el diseño del controlador en este momento. En la imagen inferior, el documento regulador es el controlador y su subparte son sus acciones. Entonces el documento normativo, los videos y los podcasts tienen casi el mismo tipo de funcionalidad. ¿este diseño es apropiado ...? En mvc para cada acción tendré una vista separada. Y en el tipo de usuario puedo tener que poner niveles de acceso en estos módulos. así que he mantenido un controlador por separado para poder controlar fácilmente el módulo para cada tipo de usuario. Pero esto está dando como resultado un código duplicado.

enter image description here

Ahora estoy pensando en hacer una clase padre y en que voy a tener todos los métodos comunes. p.ej. Tendré recursos de clase comunes y en eso mantendré la lista, buscaré, sugeriré, agregaréFavorito, etc. Y ese será el padre de los controladores dados anteriormente.

Entonces, ¿cómo puedo gestionar mi vista para todos estos diferentes módulos si voy con este enfoque ...? Si voy con esto, mi código será un poco complicado ...

+1

¿Puedes dar un ejemplo de código "desordenado"? ¿Puedes ser más específico sobre lo que te preocupa? –

Respuesta

0

Si lo entiendo correctamente, tiene un conjunto de comportamientos comunes entre sus documentos normativos, videos y podcasts.

En este caso, probablemente debería intentar abstraer las características comunes en una clase principal de la cual heredan estas tres áreas.

Como ejemplo, tengo mi propio framework MVC donde defino una superclase tnh_controller de la cual mis otros controladores (ej: venue_controller, group_controller) heredan. En el controlador padre, defino los métodos header() y footer() y delete(). Puedo usar esos sin cambios en las clases para niños y ahorrarme un poco de esfuerzo.

También puede hacer algunos de los trabajos comunes para sus modelos (CRUD) en una superclase modelo, solo anulándola según sea necesario. La mayor parte de la lógica de los diferentes modelos proviene de variables de clase (nombres de tablas, columnas, etc.).

No me preocuparía demasiado por ser "estricto" MVC. En su lugar, intente averiguar qué le ahorrará tiempo y mantendrá organizado su código. Parece que estás en el camino correcto al poner comportamientos similares a nivel parental.

0

El diseño MVC significa que para cada vista, usted tiene un controlador y un modelo. Sin embargo, los modelos no necesitan ser clases en absoluto, ni tener un modelo diferente para cada MVC. Usualmente compartirá un modelo entre algunos MVC, o su modelo podría ser un valor entero que usted define en el propio controlador. Por lo general, es posible que incluso quieren compartir datos entre ellos, entonces tendrá un modo de Singleton:

http://www.galloway.me.uk/tutorials/singleton-classes/

0

todavía se puede tener un controlador separado para contener sugerir, acciones Addfavorite sin tener que hacer que la clase padre para todos los controladores. Básicamente, los elementos de la interfaz de usuario relacionados con estos se pueden representar como vistas parciales y llamar a las acciones en el controlador correspondiente. De esa forma puedes deshacerte del problema con las vistas.

1

Sugiero que todos los controladores tengan buenas URL y una estructura clara en los módulos, sin embargo, mantenga los controladores delgados. Ponga su lógica de dominio en Servicios o Entidades, por lo tanto, no se requiere (o solo menos) duplicación de código.

Más en:

De DDD:

controladores pertenecen a la capa de aplicación/dominio de la lógica pertenece a la capa de dominio