Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Shell Root en 1 Febrero 2012, 09:54 am



Título: Funcion global creada por mi [CodeIgniter]
Publicado por: Shell Root en 1 Febrero 2012, 09:54 am
Bueno, supongamos que tengo una función en donde siempre le hago un llamado (Desde diferente Vista/Modelo), como hago para crear una función global de tal forma que pueda ser llamada desde cualquier parte de mi proyecto.

No lo puedo heredar porque ya mi Modelo hereda algo...

Tendría que crear mi propia librería?


Título: Re: Funcion global creada por mi [CodeIgniter]
Publicado por: [u]nsigned en 1 Febrero 2012, 13:31 pm
Si hablamos solo de una funcion, no de un conjunto de funciones o de una clase, lo mejor seria que te crees un helper.


Título: Re: Funcion global creada por mi [CodeIgniter]
Publicado por: Kase en 1 Febrero 2012, 15:01 pm
helper  y lo añades al autoload....   


si ya tienes un objeto base que extiende de ci_controller  y tus controladores de este objeto...  no te cuesta nada añadirlo hay mismo. 
 :¬¬


Título: Re: Funcion global creada por mi [CodeIgniter]
Publicado por: Shell Root en 3 Febrero 2012, 05:42 am
opte por crear una helper, pero tengo un pequeño problema, tengo el siguiente código.
Código
  1.   function validateToken( $id ){
  2.      if( token( $id ) ){
  3.         echo "Si";
  4.      }else{ echo "No"; }
  5.   }
  6.  
  7.   function token( $id ){
  8.      #if( !strlen($id) == 32 ){ return false; }
  9.  
  10.      $this->db->select('id, nombre');
  11.      $this->db->where('id', $id);
  12.      $query = $this->db->get('usuario');
  13.      $row = $query->row();
  14.  
  15.      if( $row->id == $id ){
  16.            return true;
  17.      }else{ return false; }
  18.   }

Pero cuando lo llamo mi helper desde mi vista, no ejecuta nada. Pero si ejecuto directamente desde la vista funciona correctamente. Que podría ser?



Me auto respondo, necesitaba crear una instancia del CI!
Código
  1.    $ci=& get_instance();
  2.    $ci->load->database();
  3.  
  4.    /* {CODE} */
  5.  


Título: Re: Funcion global creada por mi [CodeIgniter]
Publicado por: [u]nsigned en 3 Febrero 2012, 12:44 pm
No es recomendable llamar a funciones desde las Vistas, eso atenta con el modelo MVC. Lo ideal es generar todo en el controlador y guardarlo en una array, y cuando llamas a tu vista, pasarle dicho array como argumento:

Controlador:

Código
  1. <?php
  2.  
  3. class Mi_controlador extends CI_Controller {
  4.  
  5.   function index()
  6.   {
  7.      $data['page_title'] = 'Pagina de Prueba';
  8.      $this->load->view('mi_vista', $data);
  9.   }
  10.  
  11. }
  12. ?>

Vista:

Código
  1. <html>
  2. <head>
  3. <title><?php echo $page_title;?></title>
  4. </head>
  5. <body>
  6. <h1>PoC</h1>
  7. </body>
  8. </html>

Y por ultimo, veo que tu función opera sobre DD.BB. Creo que eso seria mejor ponerlo en un Modelo xD


Título: Re: Funcion global creada por mi [CodeIgniter]
Publicado por: Shell Root en 3 Febrero 2012, 20:01 pm
@El As del Club Paris, eso lo se... Pero necesito de una función global,... Y lo de la vista, lo dije sólo a modo de ejemplo, por allí en la vista funcionaba correctamente, mientras que en mi helper no.


Título: Re: Funcion global creada por mi [CodeIgniter]
Publicado por: [u]nsigned en 4 Febrero 2012, 02:17 am
Bueno, pero no te enojes  :xD