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

Varios controladores simultaneos ?

Estas en el tema de Varios controladores simultaneos ? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Disculpen.......el grado de confusion que tengo respecto de MVC.... Tengo un sitio web donde para una URL determinada podrian mostrarse: - Algo en particular (un ...
  #1 (permalink)  
Antiguo 29/06/2011, 10:46
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Varios controladores simultaneos ?

Disculpen.......el grado de confusion que tengo respecto de MVC....

Tengo un sitio web donde para una URL determinada podrian mostrarse:

- Algo en particular (un foro, herramienta, etc.)
- Posts (articulos)

Esos "posts" (controlador 'blog') se mostrarian EN CADA SUB-PAGINA del sistema......quizas con excepcion de la HOME.

Mi pregunta es....... en un momento concreto debo cargar dos controladores ? ('blog' y otro)

O por definicion de controlador (entidad de maneja el flujo de datos desde el usuario y hacia la vista, asi como pedir datos y actualizar el modelo) solo debe haber siempre uno cargado ?

GRACIAS
__________________
Salu2!
  #2 (permalink)  
Antiguo 29/06/2011, 11:31
Avatar de jahepi
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Querétaro
Mensajes: 1.124
Antigüedad: 19 años, 4 meses
Puntos: 43
Respuesta: Varios controladores simultaneos ?

Hola italico76 !

Conceptuálmente no es correcto, un controlador es responsable de gestionar los eventos del sistema y en base a eso decidir las acciones a realizar.

Lo que deberías hacer si tienes un comportamiento en común, separarlo en otra clase y reutilizarla en las clases controladoras que la requieran.

Un saludo y suerte !
__________________
Una contraseña es como la ropa interior. No deberías dejarlas afuera a la vista de otras personas, deberías cambiarla regularmente, y ni se te ocurra prestarla a extraños.
  #3 (permalink)  
Antiguo 29/06/2011, 15:25
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

jahepi: me parecia...... que estaba errandole feo

Muchas gracias por tus conceptos :)
__________________
Salu2!
  #4 (permalink)  
Antiguo 01/07/2011, 14:09
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

Bueno... intenté crear una clase ("library") para re-usar luego...desde distintos controladores pero el problema es que no se como se conecta a la DB desde una clase que no exitienda a CI_model

Cita:
$query = $this->db->select('post_title, post_content,post_image')->get('blog', $n);
Esa linea da erro! me dice que 'db' no es un objeto !!!!
__________________
Salu2!
  #5 (permalink)  
Antiguo 01/07/2011, 14:35
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: Varios controladores simultaneos ?

Tienes que obtener el super objecto.
Código Codigo:
Ver original
  1. $ci =& get_instance();
Código Codigo:
Ver original
  1. $query = $ci->db->select(...);

Te recomiendo que leas el manual.
  #6 (permalink)  
Antiguo 01/07/2011, 19:13
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

GENIAL.... ahora SI

GRACIAS GRACIAS GRACIAS
__________________
Salu2!

Última edición por Italico76; 01/07/2011 a las 20:07
  #7 (permalink)  
Antiguo 03/07/2011, 11:06
Avatar de Vitesse92  
Fecha de Ingreso: diciembre-2009
Ubicación: Internet
Mensajes: 145
Antigüedad: 14 años, 4 meses
Puntos: 5
Respuesta: Varios controladores simultaneos ?

Cita:
Iniciado por gjx2 Ver Mensaje
Tienes que obtener el super objecto.
Código Codigo:
Ver original
  1. $ci =& get_instance();
Código Codigo:
Ver original
  1. $query = $ci->db->select(...);

Te recomiendo que leas el manual.
Disculpa, pero no era ya innecesario en la version 2.0.2? :S
__________________
Imagenes de amor y Imagenes de amor . 1313
  #8 (permalink)  
Antiguo 03/07/2011, 11:30
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: Varios controladores simultaneos ?

Para codeigniter existe una extension modular HMVC donde podés integrar un modulo dentro de tu vista. Extremadamente util y casi necesario.

https://bitbucket.org/wiredesignz/co...hmvc/wiki/Home

modules::run('module/controller/method', $params(array), $foo, $var....);
__________________
Drupal Argentina
  #9 (permalink)  
Antiguo 04/07/2011, 13:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

NUCKEAR... gracias por lo de HMVC -lo estoy leyendo- ,,, pero crees justifica en mi caso ?

Haciendo caso a jahepi he creado un modulo para manejar la parte CMS (blog) de mi sitio pero el tema remanente es el siguiente:

Como muestro un listado de los ultimos articulos del blog en CADA sub-pagina del sitio HAGA LO QUE HAGA (este en el controlador que este en esa pagina) ... para mostrar esos articulos me veo obligado a hacer la llamada al listado en cada constructor de cada controlador del sistema:

Código PHP:
public function index(){  

  
$this->load->library('Blog_lib');      /* la clase Blog */
  
$this->data['post_list'] = $this->blog_lib->get_last_entries(3);   /* aca listo los ultimoa articulos */


Se ve el problema ? o extiendo la clase CI_Controller y despues me baso en esa clase.....lo que me parece inncesario o ... hago las llamadas a la clase Blog_lib, instanciandola desde la propia vista......lo que me parece una aberracion

Que me sugieres / suguieren ?
__________________
Salu2!
  #10 (permalink)  
Antiguo 09/07/2011, 10:42
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

Cita:
Iniciado por NUCKLEAR Ver Mensaje
Para codeigniter existe una extension modular HMVC donde podés integrar un modulo dentro de tu vista. Extremadamente util y casi necesario.

https://bitbucket.org/wiredesignz/co...hmvc/wiki/Home

modules::run('module/controller/method', $params(array), $foo, $var....);

NUCKLEAR! estoy teniendo un problema intentando cargar un controller tal como explicas.......mira:

Código PHP:
$this->data['post_list'] = modules::run('blog/blog/get_last_entries/'3); 
Eso me genera:

Cita:
An Error Was Encountered

Unable to locate the model you have specified: blog_m
Y si en cambio escribo:

Código PHP:
$this->data['post_list'] = modules::run('../blog/blog/get_last_entries/'3); 
... me devuelve NULL !!!! carga con NULL mi $this->data['post_list']

Que puede pasar ?

Cabe aclarar que en el controller blog del modulo blog lo hago asi:

Código PHP:
$this->load->model('blog_m');
$this->data['post_list'] = $this->blog_m->get_last_entries(3); 
Y ahi SI funciona......pero no cuando lo quiero cargar desde otro modulo con modules::run() me da problemas porque no encuentra el modelo del otro modulo

He comprobado que la linea que genera el error es la de la carga del modelo en el controlador........o sea..
  • Si el controller que quiero cargar no tiene modelo......no hay error
  • Si el controller (que usa su modelo) es llamado directamente -no con modules::run()- tampoco da error

Ideas ?
__________________
Salu2!

Última edición por Italico76; 09/07/2011 a las 12:19
  #11 (permalink)  
Antiguo 09/07/2011, 12:25
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

Por otro lado.......cuando digo "no hay error"... es para simplificar porque la sola asignacion de la salida del controller me da un error

Código PHP:
$a modules::run('test','Mundo!'); 
Cita:
Call to a member function set_userdata() on a non-object
Genera un error en el manejo de sessiones..... a pesar de que SUPUESTAMENTE no envia nada al navegador
__________________
Salu2!
  #12 (permalink)  
Antiguo 09/07/2011, 19:24
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

Bueno...si cargo el echo modules::run('test','Mundo!'); desde la vista no da error......pero... sigo sin poder cargar el modelo!

Lo mas charro es que... el modelo no lo carga ni ubicado a nivel de la applicacion utilizando el autoload.php a ese nivel cuando invoco al controller como modules::run('test','Mundo!');

Aca tambien les pasa lo mismo: http://codeigniter.com/forums/viewthread/85504/
__________________
Salu2!

Última edición por Italico76; 09/07/2011 a las 22:28
  #13 (permalink)  
Antiguo 09/07/2011, 22:40
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

Ni siquiera coje las librerias (intentando usarlas en vez del modelo) en el caso de llamar desde la vista al controller.........
__________________
Salu2!
  #14 (permalink)  
Antiguo 11/07/2011, 05:44
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

POR FIN!!!!

Mi objetivo era poder re-utilizar la salida de un controller siguiendo la idea de GatorV y NUCKLEAR sobre ViewHelpers / HMVC pero... como el Plugin de CI no funciona al 100%, opté por simplemente cargar el modelo en la clase "abuelo" MY_Controller .... y directamente lo utilizo desde este controlador para una accion simple tal como una consulta al Modelo

Código PHP:
class MY_Controller extends CI_Controller{

  protected 
$data=array();

  function 
__construct(){    
    
parent::__construct();    
    
      
$this->load->model('../modules/cpanel/models/cpanel_m');     /* aca si logro me tome el modelo...y lo heredo */
   
}

Asi...logro sobre-pasar el problema con los modules::run() del plugin HMVC de CodeIgniter
__________________
Salu2!

Última edición por Italico76; 11/07/2011 a las 06:33
  #15 (permalink)  
Antiguo 11/07/2011, 13:01
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: Varios controladores simultaneos ?

Los modulos son pequeñas aplicaciones que tienen la capacidad de poder recibir parametros e imprimir resultados o retornar una respuesta. El funcionamiento es simple y logico.

Ejm: Si tienes una vista blog que muestra un post y quieres imprimir los comentarios relacionados al id del post:


Cargando un partial:

Vista Post:
*************
*************

coments:

echo Modules::run("moduleComment/coments/list", $id_post);

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

Se supone que tu module moduleComment tienes tu controller: comments y un metodo: list

function list($id_post){

.......procesas $id_post

return $this->load->view('lista_de_comentarios_view', $foo);

}


O podes armar el modulo para que te retorne un array asociativo con los comments y luego procesarlo... desde tu post controller.

Es un poco abstracto de explicar, pero la idea creo que esta.

Saludos.
__________________
Drupal Argentina
  #16 (permalink)  
Antiguo 11/07/2011, 14:20
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Varios controladores simultaneos ?

NUCKLEAR ...gracias por tu tiempo

El problema es que el modules::run() no me funciona si el modulo carga su modelo (!)

Cita:
return $this->load->view('lista_de_comentarios_view', $foo);
Creo que le falta como tercer parametro TRUE para que no lo envie al navegador

PD: como dije muchas veces por estos dias.... si el controller tiene su modelo...al intentar hacer el modules::run("moduleComment/coments/list", $id_post); me da un error diciendo que no encuentra el modelo! en cambio y paradojicamente si accedo directamente en el navegador a /coments/list/55 por decir algo......me funciona!
__________________
Salu2!

Etiquetas: controladores
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:24.