> Faqs > ¿La vista conoce al modelo en MVC?

¿La vista conoce al modelo en MVC?

Quisiera saber si en una arquitectura MVC la vista puede conocer al modelo, es decir, desde la vista usar el modelo para acceder directamente a los datos que debe mostrar.

Respuestas

En principio en MVC las vistas no acceden directamenete a los modelos para recuperar datos. Los datos los recupera el controlador y cuando se invoca a la vista para producir la salida, envía todos los datos que ésta necesita la vista para "pintarse".

De todos modos, hay arquitecturas que sí que acceden al modelo o a un "modelo de la vista", como MVVM. Lo quiero decir por si te estás liando por ese asunto. En realidad existen muchos tipos de arquitecturas con unas u otras reglas y diagramas.

Lo importante de usar una arquitectura es la separación del código por responsabilidades, que te lleva a tener un código de mayor facilidad de mantenimiento, además de simplificar las cosas porque los problemas a resolver son más acotados. Ya luego si accedes al modelo desde la vista o no, es algo que puede venirte bien en situaciones en diversos ámbitos, pero que debes hacerlo cuando lo requiera o lo permita tu arquitectura.

Agustín
255 6 15 14

Si haces eso ya no sería MVC. A la vista se le pasa los datos que has obtenido del modelo. Es un circulo y va en una dirección, el usuario interactua con las vistas y esas acciones llaman funciones del controlador que a su vez, para obtener los datos, llama a los modelos necesarios que son devueltos a la vista.

Cristian
125 6 13

Hay muchas arquitecturas distintas y por tanto implementaciones. Pero hay un estándar más utilizado en el que la vista conoce al controlador pero no al modelo.

El controlador hace una especie de filtro con respecto al modelo, el cual se encarga de validar previamente que los modelos se van a usar correctamente. El controlador por tanto, se comunica con la vista y, si está en condiciones de hacerlo correctamente, entonces se comunica con el modelo.

Sin embargo, depende de la comunidad o el framework que uses puede haber variaciones.

Alberto
610 16 42 18