Mis Helpers en CodeIgniter

31Mar12

En el post anterior, al trabajar con CI, vimos como referenciar imágenes, estilos, archivos js y cualquier otro archivo externo. Vimos que si tengo mi sitio de prueba en mi servidor local, al subirlo a un servidor remoto, la labor de referenciar dichos archivos podría significar un importante tiempo si lo hacemos manualmente. Aquí pueden ayudarnos los Helpers. Los Helpers son métodos disponibles en todo el framework CI. Es decir, puedo usar estos métodos tanto en  las vistas como en los controladores y/o los modelos. Vemos cómo implementarlos.

Siempre suponiendo que nuestro sitio está en http://localhost/misitio, en el directorio raiz encontramos entre otros los siguientes archivos y carpetas:

  1. [imagenes]
  2. [estilos]
  3. [js]
  4. [application]
  5.                [models]
  6.                [views]
  7.                                  vista.php
  8.                [controlers]
  9.                                  miControlador.php
  10.                [helpers]
  11.                                  rutas_helper.php
  12. [system]
  13. index.php

Hemos creado los archivos miControlador.php, vista.php y en la carpeta [helpers], el archivo rutas_helper.php. En este último escribimos el siguiente código:

            rutas_helper.php

  1. <?php
  2. function server_root(){
  3.       $server_root = ‘http://localhost/misitio/&#8217;;   // valor en servidor local.
  4.       //$site_root = ‘http://www.servidorremoto.com.ar/&#8217;;   // valor en servidor remoto.
  5.       return $server_root;
  6. }
  7. ?>

Aquí vemos que este método devuelve el valor de la variable $server_root, que según este comentada o no la línea 3 o la línea 4, será la ruta que se considerará. La idea de todo esto es la de usar este método en una vista por ejemplo.

            vista.html

  1. <html>
  2. <head>…</head>
  3. <body>
  4. <table width=”500″ border=”0″ cellpadding=”0″ cellspacing=”0″>
  5.    <tr>
  6.          <td background=”<?=server_root()?>imagenes/imgo04.jpg”></td>
  7.    </tr>
  8. </table>
  9. </body>
  10. </html>

En la línea 7 vemos que se ha usado el método server_root(). Ahora bien, al subir esta vista a nuestro servidor remoto (y las otras muchas vistas que seguro vamos a tener), con sólo comentar o descomentar las líneas 3 y 4 del archivo rutas_helper.php, nos ahorramos el trabajo de hacerlo manualmente en todas y cada una de las vistas con que cuente nuestro sitio.

Ahora sólo falta tener en cuenta un detalle importante para que la vista pueda “leer” el helper: Las vistas se llaman desde un controlador, por lo tanto debemos decirle al controlador en cuestión que “cargue” el helper rutas_helper.php para que pueda ser “leído” desde sus vistas relacionadas. Lo hacemos así:

            miControlador.php

  1. <?php
  2. class MiControlador extends CI_Controller {  
  3.         public function __construct() {
  4.                          parent::__construct();
  5.                         $this->load->helper(‘rutas’);  // aquí se carga el helper al instanciar la clase.
  6.         }
  7.         public function miMetodo() {
  8.                          …
  9.                          $this->load->view(‘vista.php’);  //aquí se llama la vista con el helper ya soportado.
  10.         }
  11. }
  12. ?>

En la línea 7 vemos que al instanciar la clase, se carga el helper desde el constructor. Es decir, cuando tipiemos http://www.servidorremoto.com.ar/micontrolador/mimetodo, estaremos instanciando la clase MiControlador. En este momento se cargará el helper, luego la clase llamará al método miMetodo() y éste último, a la vista vista.php con los métodos del helper habilitados.

Anuncios


One Response to “Mis Helpers en CodeIgniter”

  1. hola esta muy bueno el tutorial, yo quiero abrir un *.txt supongo he de utilizar un helper esta bueno me onogo manos a la obra


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: