Foros del Web » Programando para Internet » PHP » CodeIgniter »

Duda: Modelo-Vista-Controlador

Estas en el tema de Duda: Modelo-Vista-Controlador en el foro de CodeIgniter en Foros del Web. Hola tengo una duda.... puse el prefijo de codeigniter porque es el framework que estoy aprendiendo a usar. Una consulta simple: cual es la forma ...
  #1 (permalink)  
Antiguo 10/05/2011, 20:49
Avatar de Vitesse92  
Fecha de Ingreso: diciembre-2009
Ubicación: Internet
Mensajes: 145
Antigüedad: 14 años, 11 meses
Puntos: 5
Duda: Modelo-Vista-Controlador

Hola tengo una duda....
puse el prefijo de codeigniter porque es el framework que estoy aprendiendo a usar.
Una consulta simple:
cual es la forma correcta relacionar las clases usando MVC entre controlador-modelo?
ejemplo:
Código PHP:
class Controlador extends CI_Controller{
public function 
Buscar(){
$consulta=$this->db->query(('select ...etc');
$resultado=$consulta->result();
$this->load->view('vista',$resultado);
}

mi pregunta es: ¿esta es la forma correcta de hacerlo? u.u ...
porque pienso que el controlador sabe demasiado del funcionamiento interno del modelo...
el controlador debería encargarse de llamar a la vista que corresponde, ¿no? y como hacer la consultas a los datos sin que el controlador sepa "demasiado" el funcionamiento del modelo!? espero alguien me ayude, llevo días con esta duda. y no encuentro nada en san google ( que amo tanto )
  #2 (permalink)  
Antiguo 10/05/2011, 23:28
 
Fecha de Ingreso: febrero-2011
Mensajes: 2
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Duda: Modelo-Vista-Controlador

en el patron de desarrollo mvc hay un model una vista y un controlador, en lo que tu has escrito no un modelo, simplemente estas cargando una vista y buscando datos en una base de datos, los modelos son archivos aparte que van en la carpeta model, para cargar model hay que colocar asi:

$this->load->model('nombre del modelo');

para acceder a las cosas internas del model se hace asi
$this->nombredelmodelo->mienbro();

si quieres saber más puedes visitar http://codeigniter.com/user_guide/general/models.html
  #3 (permalink)  
Antiguo 10/05/2011, 23:39
Avatar de Vitesse92  
Fecha de Ingreso: diciembre-2009
Ubicación: Internet
Mensajes: 145
Antigüedad: 14 años, 11 meses
Puntos: 5
Respuesta: Duda: Modelo-Vista-Controlador

esta bien eso lo comprendo, lo que no entiendo realmente es como deberia ser la relacion entre controlador y modelo, como deberian consultarse datos desde el controlador...gracias por tu respuesta bomba1990
  #4 (permalink)  
Antiguo 11/05/2011, 03:53
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 14 años, 1 mes
Puntos: 54
Respuesta: Duda: Modelo-Vista-Controlador

Cita:
Iniciado por Vitesse92 Ver Mensaje
esta bien eso lo comprendo, lo que no entiendo realmente es como deberia ser la relacion entre controlador y modelo, como deberian consultarse datos desde el controlador...gracias por tu respuesta bomba1990
Bien, yo no conozco Code Igniter, pero mirando el modelo MVC, lo ideal es que la capa base de datos este en el Model, o sea, las consultas Sql,
Luego, en el controlador tu llamarias a esas consultas pasandole parametros si lo necesitas y recuperarias los datos.

:)
  #5 (permalink)  
Antiguo 11/05/2011, 06:16
 
Fecha de Ingreso: marzo-2010
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 24
Respuesta: Duda: Modelo-Vista-Controlador

Algo mas que puedes hacer es que si estos datos necesitan cierta logica por parte de php, hazlo en el modelo, el controlador solo carga el modelo, usa una funcion de este, y le asigna los datos a una vista, sin mucha logica en medio. Esto seria lo que se dice : Fat Models, Skinny Controllers

Aclaro que no todos siguen esta forma de programar, eso queda a eleccion de cada uno. Por mi parte yo sigo esta regla porque si el controlador es el que lleva la logica, si necesito la misma funcion con la misma logica en otro controlador estaria duplicando codigo, y si guardaste la logica en el modelo, pero en cierto momento vos necesitas solo los datos puros, se arregla con algun condicional que use algun parametro de la funcion.

Espero que me haya explicado bien, y que te sea de ayuda, saludos.
  #6 (permalink)  
Antiguo 11/05/2011, 07:53
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Duda: Modelo-Vista-Controlador

El metodo que haga la consulta debe estar en el modelo, y llamarlo desde el controller: Te pongo n ejemplo bastante global:

Código PHP:
Ver original
  1. Controller:
  2.  
  3. function controller1(){
  4.  
  5. $data['q'] = $this->mimodel->mimetodo($parametros);
  6. $this->load->view('templateView', $data);
  7.  
  8. }
  9.  
  10.  
  11.  
  12. model: mimodel.php
  13.  
  14. function mimetodo($parametros){
  15.  
  16. $q = $this->db->query('.............');
  17. return $q;
  18.  
  19. }
  20.  
  21.  
  22. Ya tienes un array asociativo con los resultados enviados a tu Vista, lo podes desglozar como quieras:
  23.  
  24.  
  25. vista:
  26.  
  27. foreach($q->result() as $results){
  28.  
  29. print $results->field1;
  30. print $results->field2;
  31. etc etc...
  32.  
  33. }
__________________
Drupal Argentina
  #7 (permalink)  
Antiguo 11/05/2011, 11:21
Avatar de Vitesse92  
Fecha de Ingreso: diciembre-2009
Ubicación: Internet
Mensajes: 145
Antigüedad: 14 años, 11 meses
Puntos: 5
Respuesta: Duda: Modelo-Vista-Controlador

oh gracias a todos por sus respuestas , todas las respuestas aportaron algo :) muchas gracias!
  #8 (permalink)  
Antiguo 11/05/2011, 14:54
Avatar de _-ZeuS-_  
Fecha de Ingreso: junio-2007
Ubicación: Quito, Ecuador! ;)
Mensajes: 100
Antigüedad: 17 años, 5 meses
Puntos: 7
Respuesta: Duda: Modelo-Vista-Controlador

Weno si a mi me preguntas creo que lo que se debe hacer es separar las capas de tal manera que la vista sea lo más pura y se ponga cosas que en realidad ya vea el usuario es decir que los datos ya lleguen tratados.

El controlador para mí siempre es tan sólo una capa de transición a la que llegan los datos de la vista y desde la cual envías data ya tratada, es decir aquí no deberías poner tampoco lógica de negocio.

Por último el modelo, es lo más conveniente que se encuentre aquí toda la lógica debido a que llegas a un 3er nivel en donde ya trataste los datos, evitaste que sean ataques, los filtraste y finalmente los tratas y les daras el proceso requerido para ser enviado al controlador y posteriormente a la vista.

Etiquetas: frameworks-y-php-orientado-a-objetos, mvc, poo
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 09:24.