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:
Esta funcion me da el objeto NOTICIA que tiene un array de objetos COMENTARIO.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'); }
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:
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).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; }
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 :)