Acceder al objeto CI dede los helpers

Se puede presentar el caso de que necesitemos acceder a la base de datos desde nuestro propio helper, alguna función podría requerir trabajar con determinada librería y desde el helper no podríamos trabajarlo como lo hacemos desde el modelo o el controlador.

Aún, si desde el autoload.php se carga la librería por defecto, si no se ha instanciado al objeto, no podremos trabajar con el.

Para crear la instancia al objeto CodeIgniter desde el helper, lo podemos hacer de la siguiente manera:
$CI =& get_instance();

y luego dependiendo de lo que se desee hacer, cargar las librerías que necesitemos, ejemplo:
$CI->load->database();
$CI->load->library('session');

ya luego si podemos trabajar con el objeto:
$query = $CI->db->query($sSQL);

ejemplo:
/*
   @verifica la existencia del RIF dentro de la tabla dada
*/
if ( ! function_exists('existe_rif'))
{
    function existe_rif($sRIF,$sTabla='clientes'){
   
       if (empty($sRIF)) return false;
      
       $CI =& get_instance();
       $CI->load->database();
       
       $query = $CI->db->query('SELECT rif FROM '.$sTabla.' WHERE rif=?',array($sRIF));
      
       return ($query->num_rows() > 0) ? true : false;
   }
}

Las ventajas de trabajar con nuestro propio helper:
- podemos acceder a nuestras funciones cuando y donde sea necesario, ejemplo:
if (!existe_rif('v4567893456')) ...

- podemos indicar que el helper se cargue automáticamente (codeigniter -> applicattion -> config -> autoload.php):

// indicamos que helpers se cargaran por defecto
$autoload['helper'] = array('url','mod_ppal')//mod_ppal_helper.php

0 comentarios:

Publicar un comentario en la entrada

- Los comentarios están siendo moderados y serán publicados en la brevedad posible.