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

MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Estas en el tema de MVC: Volver del controlador a la vista ¿esta bien como lo hago? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola Hola ! ¿que tal? Bueno un tema recurrente este... espero no les caiga poco simpático, pero les prometo que cuando aprenda yo voy a ...
  #1 (permalink)  
Antiguo 02/07/2008, 19:28
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Pregunta MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Hola Hola ! ¿que tal?

Bueno un tema recurrente este... espero no les caiga poco simpático, pero les prometo que cuando aprenda yo voy a contestar a todos los q pregunten asi no se toman la molestia ustedes como conmigo :)

Quiero saber si esta bien lo que hago. Supongamos que tengo en pantalla cargada una noticia con su listado de comentarios, y abajo de todo, un formulario para agregar comentarios a la noticia (Eso sería la VISTA).

Mi clase controlador de NOTICIA tiene un metodo llamado "verNoticia()":

NOTA: Esto esta en desarrollo, por eso no controlo GET's y todo esta medio al vuelo...

Código:
	public function verNoticia($id_noticia = null) {

		if ($id_noticia == null)
			$id_noticia = $_GET['id'];

		$adm_noticias = new Noticia_Admin($this->registry);

		if ( !($noticia = $adm_noticias->getNoticia($id_noticia)) )
			echo "ERROR AL INTENTAR OBTENER NOTICIA";

		$this->registry['template']->set('noticia', $noticia);

		$this->registry['template']->setTemplate("basic");
		$this->registry['template']->display('noticia');
	}
Esta funcion me da el objeto NOTICIA que tiene un array de objetos COMENTARIO.


En mi pantalla, voy hasta el ultimo comentario y completo el formulario para gregar un nuevo comentario. El "ACTION" de ese formulario apunta a al metodo: "nuevoComentario()" dentro de la misma clase del mismo controlador de noticias, que sería así:

Código:
	public function nuevoComentario() {

		$id_noticia = $_POST['id_noticia'];
		$cmtTitle = $_POST['cmtTitle'];
		$cmtBody = $_POST['cmtBody'];

		$adm_comentario = new comentario_admin($this->registry);
		$adm_comentario->setParentVal($id_noticia);
		$adm_comentario->nuevo($id_noticia, $cmtTitle, $cmtBody);

                // Cuando haya errores los voy a pasar al VIEW así:
		$this->registry['template']->set('error', $this->error);
		$this->registry['template']->set('error_msg', $this->error_msg);

		$this->verNoticia($id_noticia);
		return true;
	}
La logica es simple... cuando agrego un COMENTARIO, realizo el proceso con el metodo "nuevoComentario();" y este mismo metodo llama al metodo "verNoticia();" pasandole el ID... para que me vuelva a mostrar la pantalla de la noticia con todos los comentarios en donde aparecerá el comentario nuevo (si no hubo error, claro, aunque eso todavia no lo programe).

Lo UNICO que me deja pensando es que cuando recarga la página mostrando el nuevo comentario, en el URL veo el "ACTION" del form y supongo que debería ver el URL del metodo que lista las noticias... por ende, supongo que no estoy haciendo las cosas del todo bien...
Esto lo puedo solucionar reemplazando la anteultima linea del metodo "nuevoComentario()" por:

header("Location: ?route=noticias/noticias/verNoticia&id=".$id_noticia);

Pero no se si "vale" hacer redireccionamiento desde el controller... :S

Esta es la mejor forma que se me ocurrio entre tantas... pero como todavia esto es medio de práctica y el entorno de mi mvc se reduce a un "listador de noticias y comentarios" no se si estoy dejando de lado algun aspecto...

¿Que les parece? ¿Esta bien? ¿Estoy haciendo una tontería y debería re-plantearme mi existencia como programador? :P


Por favor CUALQUIER comentario que me dejen va a ser valorado como quien valora un vaso de agua en medio del desierto... (enfatizo el caracter pseudo-dramático de mi incursión en POO :P)

Un saludo grande y muchas gracias :)

Última edición por Computer XTress; 02/07/2008 a las 19:38
  #2 (permalink)  
Antiguo 03/07/2008, 03:36
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Yo no veo nada malo en hacer un redirección en el controlador. De hecho, me parece muy correcto hacerlo después de un proceso.
  #3 (permalink)  
Antiguo 03/07/2008, 08:34
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: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Totalmente de acuerdo con jerkan, es lo mejor hacer el redirect, ya que así borras el cache de POST y no te aparece una ventana de recargar cuando das click en reload.

Saludos.
  #4 (permalink)  
Antiguo 16/07/2008, 10:02
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Osea, ustedes me estan queriendo decir que DE ENTRADA lo hice bien??

Pero ven, yo no se que hago acá preguntando en un foro... voy a mandar un cv a M$ XDDD

Muchas gracias chee, q felicidad, ya casi tengo todo andando de pelos !!!

Un abrazo!

eD
  #5 (permalink)  
Antiguo 16/07/2008, 10:48
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Sugerencia aparte: cierra siempre las llaves de los IF's
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #6 (permalink)  
Antiguo 16/07/2008, 11:07
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Pero no use ningun IF con llaves abiertas ¿vos decis que no use IF's sin llaves directamente?

Antes lo hacia asi pero me acostumbre a ver que muchos lo hacian asi para consecuencias de 1 sola linea y me copié jeje
  #7 (permalink)  
Antiguo 16/07/2008, 12:31
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 6 meses
Puntos: 890
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Mas que nada es para que tengas tu codigo con mejor formato y mas entendible, siempre los ; siempre las llaves{}, bien tabulado(no se si es el termino correcto ñ.ñ ), en fin lo mas prolijo posible.
__________________
Drupal Argentina
  #8 (permalink)  
Antiguo 16/07/2008, 12:41
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Pero claro, eso lo hago desde que empece a programar !:P

No usar los llaves para IF's de 1 sola linea de consecuencia me parecio de hecho algo que aportaba al orden en el código... y me costo un poco emepzar a usarlo ya que antes por más que fuera un "echo 'HOLA';" le pona llaves...

gracias igual por la mención igualmente ! todo suma

un saludo !!
  #9 (permalink)  
Antiguo 16/07/2008, 12:45
 
Fecha de Ingreso: abril-2008
Mensajes: 264
Antigüedad: 16 años
Puntos: 2
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

Me parece un poco exagerado... Es como decir que el if que usar ? esta mal :S.

Código:
return (a>b)? a+1 : b+2;
Ese pedazo de codigo por ejemplo no tiene mal el if, lo que tiene mal es el nombre de las variables!

Es mucho mas importante pornerle nombres expresivos a las variables/funciones/metodos que usar llaves / super tabulaciones.

Además, si uno escribe buen código nunca llega a tener mas de dós indentaciones ( y dos ya me parece mucho ).
__________________
Saludoss
Guille
  #10 (permalink)  
Antiguo 16/07/2008, 13:08
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

bueno, no nos pongamos locos...

"NOTA: Esto esta en desarrollo, por eso no controlo GET's y todo esta medio al vuelo..."


Eso puse en el mensaje...

Quedense tranquilos que soy muy prolijo... por eso dije que le voy a mandar mi cv a MS ;P

Un saludo!

eD
  #11 (permalink)  
Antiguo 16/07/2008, 15:58
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: MVC: Volver del controlador a la vista ¿esta bien como lo hago?

No uses

Código PHP:
if ($id_noticia == null)
            
$id_noticia $_GET['id']; 
Usa siempre

Código PHP:
if ($id_noticia == null){
            
$id_noticia $_GET['id'];

Las "Buenas Costumbres" así lo sugieren, te van a evitar muchos problemas, además.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
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




La zona horaria es GMT -6. Ahora son las 01:49.