Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/06/2011, 23:01
Avatar de destor77
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: Como puedo hacer esto

Hola para hacer esto yo uso esto:
Código PHP:
Ver original
  1. /**
  2.      * Método para cargar los modelos
  3.      *
  4.      * @version 0.1
  5.      * @author Lucas M. sastre
  6.      * @access public
  7.      *
  8.      * @param <string> $nombre
  9.      * @return <void>
  10.      */
  11.     public function modelo($nombre) {
  12.         if(empty($nombre)) {
  13.         return false;
  14.         }
  15.  
  16.         if(is_array($nombre)) {
  17.         foreach($nombre as $modelo) {
  18.             $modelo = ucfirst($modelo);
  19.             //valido si existe el archivo del modelo
  20.             if(!empty($modelo)) {
  21.             if(file_exists($this->Config->get('root').$this->Config->get('modelsFolder').$modelo.'Model.php')) {
  22.                 //valido si no esta instanciada la clase previamente
  23.                 if(!class_exists($modelo)) {
  24.                 include_once($this->Config->get('root').$this->Config->get('modelsFolder').$modelo.'Model.php');
  25.                 $this->$modelo = new $modelo();
  26.                 }
  27.                 else {
  28.                 $this->$modelo = new $modelo();
  29.                 }
  30.  
  31.             }
  32.             else {
  33.                 $ruta = $this->Config->get('root').$this->Config->get('modelsFolder').$modelo.'Model.php';
  34.                 error_log("[".date("F j, Y, G:i")."] [Error: E_USER_NOTICE] [tipo modelos] No se encuentra el modelo: {$modelo} en {$ruta}- \n", 3,$this->Config->get('root').'/errores.log');
  35.  
  36.                 return false;
  37.             }
  38.             }
  39.         }
  40.         }
  41.         else {
  42.         //valido si existe el archivo del modelo
  43.         $modelo = ucfirst($nombre);    
  44.         if(file_exists($this->Config->get('root').$this->Config->get('modelsFolder').$modelo.'Model.php')) {                       
  45.             //valido si no esta instanciada la clase previamente
  46.             if(!class_exists(ucfirst($modelo))) {          
  47.             include_once($this->Config->get('root').$this->Config->get('modelsFolder').$modelo.'Model.php');
  48.             $this->$modelo = new $modelo();
  49.             }
  50.             else {
  51.             $this->$modelo = new $modelo();
  52.             }          
  53.         }
  54.         else {         
  55.             $ruta = $this->Config->get('root').$this->Config->get('modelsFolder').$modelo.'Model.php';
  56.             error_log("[".date("F j, Y, G:i")."] [Error: E_USER_NOTICE] [tipo modelos]  No se encuentra el modelo: {$modelo} en {$ruta}\n", 3,$this->Config->get('root').'/errores.log');
  57.             //trigger_error("No se encuentra la libreria: {$nombre} en {$ruta}<br/>",E_USER_NOTICE);
  58.             return false;
  59.         }
  60.         }
  61.     }

entonces en mi controlador puedo hacer esto:
Código PHP:
Ver original
  1. $this->modelo('blog'):
  2. $this->Blog->metodoQueUsamos();

o tambien:
Código PHP:
Ver original
  1. $this->modelo(array('blog','post'):
  2. $this->Blog->metodoQueUsamos();
  3. $this->Post->QueUsamos();