Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Algo que nunca he comprendido de las Vistas usando MVC

Estas en el tema de Algo que nunca he comprendido de las Vistas usando MVC en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Normalmente en los tutoriales se comprueba que exista el controlador y la acción a ser llamados, si existen, entonces se crea la instancia y se ...
  #1 (permalink)  
Antiguo 06/06/2008, 16:47
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Algo que nunca he comprendido de las Vistas usando MVC

Normalmente en los tutoriales se comprueba que exista el controlador y la acción a ser llamados, si existen, entonces se crea la instancia y se ejecuta la acción correspondiente...

Estas acciones, usan los modelos, y se pasan los datos a las vistas... que son renderizadas.

Pero a mi forma de ver, a menudo en los tutoriales aunque veo grandes esfuerzos por hacer entender como funciona MVC, respecto a las vistas solo se enseña como mostrar una simple vista que muestra un array y ya está.

Si yo quiero hacer una template que pueda tener asignadas varias vistas y que estas vistas cambien... eso todavía no lo he visto explicado, con ejemplos entendibles.

Si he visto por ejemplo codigos para hacer templates que contengan solo una vista y que esta no cambie... simplemente se ejecuta cuando la accion es llamada y se muestra todo. Pero eso desgraciadamente te obliga a que si quieres que cambie debes hacer una template nueva con la vista en otro bloque/sitio digamos...

Entonces que estrategia debería seguir para poder usar templates + vistas que puedan ser alteradas ? :S Esto debe de hacerse en la práctica... entonces lo que pregunto es que suelen hacer ??? o como suelen hacer esto posible ???

Un saludo
  #2 (permalink)  
Antiguo 06/06/2008, 23:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

Hola yoguu,

¿A que te refieres? A vistas que puedas descargar de una base de datos ¿como los estilos por ejemplo de VBulletin?.
  #3 (permalink)  
Antiguo 09/06/2008, 03:41
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

Hola GatorV disculpa por la tardanza. Escribí una vez, me lo curré mucho y no se envió... Me desmoralizé un poco. Y por eso he tardado un poco en responder. xD

No me refiero a las templates que pueden tener Vbulletin, wordpress, etc...

Me refiero a una clase o clases para mostrar vistas usando haciendo una aplicación MVC. Decía que en los tutoriales que he visto, que son muuuuchos. Siempre he visto que la parte de las vistas se deja explicado bastante a medias en mi opinión. Cosa que crea bastante confusión. Me gustaría enumerar las diferentes formas relativamente fáciles de crear vistas en un sistema MVC más o menos para un uso personal / pequeñas aplicaciones.

Supongamos que:
Tenemos un controlador A y una acción B, esta acción, usará conjuntamente modelo + lógica de negocio y una vez los datos son veraces, se pasarán a la instancia de la vista para ser renderizadas, mostradas, como lo querámos decir... Pero a lo que voy es a la forma en que se utiliza esa esa instancia para crear así las vistas de nuestro sistema.
A continuación enumero lo que suelo ver:
1. Una instancia de vista donde se le asigna a una plantilla (un archivo) los datos que tiene que mostrar, e inmediatamente sin más se renderiza.

Que pasa, que de esta forma no habrá manera de tener páginas complejas... O explicarme como ^^ por que yo no lo entiendo.

---------------------------------------------------------------------------------------------
2. Tenemos igualmente una instancia de una vista pero esta vez dotamos a la clase de capacidad para asignar una plantilla maestra (llamemosle layout, MasterPage en ASPx) y una plantilla normal... Donde la plantilla maestra contendrá la otra...

De esta forma ya podemos crear páginas un poco más complejas, que tengan un poco de estructura y que no solo sea una triste vista cargada ahí solitaria en una pagina blanca...

Que sucede, pues que en muchos tutoriales se asigna una sola plantilla a una sola Layout ( osea que solo habrá una variable para ser remplazada por la plantilla, lo demás será solo un volcado html) y eso me parece tener muy poca libertad de maniobra, sinceramente.

¿ Que pasa si yo deseo crear una plantilla maestra / Layout que por ejemplo tenga varios contenidos (que use varias plantillas) ? Debería modificar la clase para poder asignar varias plantillas a una sola layout y que la renderize, no ?

¿ No sería lo ideal ?
Y GatorV ya que respondiste el primero, en tu artículo "Patron MVC" de tu blog donde explicas el patrón usas vistas yo diría como en el punto 2 de arriba... Asignas una "Template" a una "Layout"... Pero tal como está explicado ese artículo técnicamente y es una pregunta ¿ Una "Layout" podría contener más de una "Template" ? Si es posible... Lo que no entiendo de ninguna manera es COMO.

Por último decir que para hacer la básico de MVC que tengo y para las vistas me basé en:
http://www.jourmoly.com.ar/introducc...segunda-parte/
http://blog.richard.com.ve/2007/mvc-en-php5-la-vista/
http://web2development.blogspot.com/

Creo que falta alguno... pero ahora no caigo.

uFFF espero se me haya entendido bién... pues sé que me explico de una forma bastante peculiar. Gracias a quién me lea y cualquier opinión/ayuda será bién recibida :)
  #4 (permalink)  
Antiguo 09/06/2008, 12:24
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

Mmmm, creo que entiendo tu punto, te refieres a tener un sitio por ejemplo como un portal donde en un lado tienes una encuesta, más abajo links de interes, en medio noticias, etc.?
  #5 (permalink)  
Antiguo 09/06/2008, 14:10
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

Si GatorV algo así. Más o menos como sería típicamente un portal. Pero hacer esto con vistas en MVC.
  #6 (permalink)  
Antiguo 09/06/2008, 16:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

Es un tema un poco bastante amplio, ya que como dices si no es tan sencillo, requiere de una lógica muy fuerte.

Yo en particular hago lo siguiente (a la hora de hacer un portal). Mi capa de negocios es la mas "fuerte", ya que en ella hago programo toda la aplicación, es decir por decir imaginemos un portal de noticias.

La capa de negocios consistiria en varios objetos que engloban la aplicación:
- Noticias
- Encuestas
- Noticias Relacionadas
- Noticia del Momento
- Banners ( Tanto laterales como "in-place" )
- ChatBox

Todos esos objetos y sus interacciones con la DB están en la capa de negocios, que engloban la capa de Modelo en si, pero van un poco más allá.

Ahora al mostrar el index, pues hay que mostrar todo el portal en 3 columnas, 1 columna con navegación y banner, columna de en medio con noticias del día, y la tercer columna es noticia del momento, encuesta, otro banner y el chatbox.

Ahora en las paginas de "leer mas" hay que volver a renderear todo (la navegación, encuesta, etc.) solo que con la única noticia que estas viendo por el "leer más".

Como son varias plantillas diferentes, y varias vistas únicas lo que yo haría en este caso (hablando expresamente de mi FW), seria extender el objeto $view, (es decir crear un nuevo objeto que herede a este), y sobre el trabajar que a la hora del render, haga un llamado a cada objeto "estático" (es decir encuesta / noticia del momento / banners / etc ), instanciarlos e inyectarlos en el template principal (es decir el Master).

Es una de las ventajas de la POO que luego se nos olvida, podemos extender un objeto para agregarle funcionalidad especifica que necesitamos en ese momento.

Espero con esto darte una idea de mas o menos como encarar una situación así.

Saludos.
  #7 (permalink)  
Antiguo 11/06/2008, 17:12
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 19 años, 3 meses
Puntos: 2
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

Si lo he entendido bién, consistiría en principio renderizar las vistas por defecto y cuando se modifique, renderizar de nuevo con una de las partes debidamente cambiada.Luego para poder hacer esto, extender la clase de forma que esta clase hija pudiese llegar a modificar la llamada que hizo la clase padre.

Para poder hacer eso la primera cosa que se me ocurre es que la clase padre de las vistas, debería poder guardar el estado, que vistas fueron cargadas a fin de poder ser remplazadas... no ? Si te referías a algo así, me parece para mi nivel, asequible.

------------

Más complejo creo que entonces, dados mis conocimientos sería mejor intentar aprender algún framework, codeigniter, cake, zend... Codeigniter me gustó por que hacen que parezca fácil, a mi parecer tiene un código bastante entendible. Y he estado mirando las vistas y que yo sepa codeigniter no dispone la posibilidad de templates ni vistas más complejas...http://codeigniter.com/user_guide/general/views.html

A mi entender, para crear una página como la que hablabamos con codeigniter, no sé si lo conocerás tu gator... lo unico es añadir vistas unas detras de las otras... les asignas los datos independientemente y ale... ya tienes una página...

¿ sería así con CodeIgniter o me estoy liando ?

si es así... Mi duda claro era que yo ya pensé hacer eso... pero es que me parece algo bastante burro, en cuanto a rendimiento :S

Gracias
Un saludo

Última edición por yoguuu; 11/06/2008 a las 17:31
  #8 (permalink)  
Antiguo 12/06/2008, 01:52
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

Los tutoriales no explican como implementar las vistas de la misma forma que tampoco te dicen como implementar los modelos.

Puedes hacer una vista que use smarty como motor de plantillas, o puedes usar xslt para pasar de xml a html. Puedes usar otros patrones de diseño.

Lo importante de la vista es que tenga un metodo que devuelva la pagina.
  #9 (permalink)  
Antiguo 12/06/2008, 08:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

Hola yoguuu,

Nunca he usado Code Igniter, pero creo que cualquier Framework que tenga una buena base de diseño, lo podrás usar para lo que preguntas, ya que solo es extender la clase que maneje el View para inyectar el código que es permanente o no cambia tan sencillo.

Saludos.
  #10 (permalink)  
Antiguo 12/06/2008, 14:43
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

yo si he usado CI y lo que puedo comprender de estas vistas sencillas es esto...

son archivos PHP comunes, y corrientes... de esos que empezábamos a programar cuando chicos...

la sencillo de estos archivos, es que reciben los datos en forma de variables (básicamente) porque en el modelo y/o controlador establecemos estos valores... casi como Smarty

así es mas fácil, ya que solo debes hacer unos cuantos ciclos y formato en HTML.. y un poco de PHP por aquí, otro por allá.... y eso es una vista

en ves de, conectar a MySQL, tratar información, variables GET/POST, etc, etc.... todo en un mismo archivo, eso quedo atrás...

lo único que haces en las vistas son procedimientos simples, obvio, lo mejor en los controladores/modelos es NO imprimir.... y entonces, usar una vista en su lugar...


entonces, así entiendo yo.... mi vista general (xHTML) le nombro layout y le paso valores de titulo, cuerpo, estilos, javascript, etc.... la vista, lo renderiza de acuerdo a los datos presentados... y demás variables

ahí si, podemos usar includes() para hacer esto mas modular de lo que parece... no se, es lo poco que entiendo de las vistas.... al menos de CodeIgniter

suerte y gracias!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 12/06/2008, 20:30
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Respuesta: Algo que nunca he comprendido de las Vistas usando MVC

entonces que debería hacer yo para que un sidebar el cual va a mostrar info de la db se mantenga mostrando esa info independientemente de la vista que seleccione?
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 02:27.