CodeIgniter – Llamar un modelo o librería desde una vista

Veamos cómo llamar en CodeIgniter 3 un modelo o librería desde una vista.

Hay ocasiones que para ahorrar código, necesitaremos llamar a nuestros modelos o librerías directamente desde una vista sin pasar por los controladores.

Uso de modelo desde vista

Supongamos, que una de nuestras vistas es la cabecera de nuestra web. Ésta, muestra siempre la misma información.

En nuestra vista, llamémosla cabecera_view.php, insertaremos el siguiente código

$ci = &get_instance();
$ci->load->model("menu_model");

Con este código dentro de nuestra vista, lo que hacemos es llamar al model «menu_model».

Ahora ya podemos utilizarlo para mostrar la información:

$menuprincipal= $ci->menu_model->menuPrincipal();

Ahora, en la variable ‘$menuprincipal’ tendremos la array devuelta desde la función ‘menuPrincipal()’ del modelo ‘menu_model’.

Así pues, tenemos una vista que muestra nuestra cabera, y que llama a funciones de un modelo concreto.

Uso de librería desde vista

Supongamos que tenemos definida una librería propia en CodeIgniter y queremos llamarla desde una vista. Lo haremos de la siguiente manera:

Veamos el fichero donde definimos nuestra pequeña librería:

 /application/libraries/Date_library.php

Como podéis ver sólo contiene una función que traduce una fecha en formato 2020-12-01 a un formato español:

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');

class Date_library {

  function fechaCastellano ($fecha) {
    $dias_ES = array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo");
    $dias_EN = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
    $meses_ES = array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
    $meses_EN = array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

    // $fecha = substr($fecha, 0, 10);
    $numeroDia = date('d', strtotime($fecha));
    $dia = date('l', strtotime($fecha));
    $mes = date('F', strtotime($fecha));
    $ano = date('Y', strtotime($fecha));
    $nombredia = str_replace($dias_EN, $dias_ES, $dia);
    $nombreMes = str_replace($meses_EN, $meses_ES, $mes);

    return $nombredia.", ".$numeroDia." ".$nombreMes." ".$ano;
  }
}
?>

Pues ahora, imaginad que queréis utilizar esta librería CodeIgniter directamente en la vista. Lo haremos de la siguiente manera:

<?php
// Librería que trata la fecha en español
$CI =& get_instance();
$CI->load->library('date_library');
?>

[...]
<?php
<td><?php echo $CI->date_library->fechaCastellano($usuario["fecha"]); ?></td>
?>

Si os fijáis, creo instancia de la librería y luego la utilizo llamando a la función fechaCastellano(). En $usuario[«fecha»] tendríamos la fecha almacenada en una base de datos MySql con el formato 1974-07-08.

Recordad que no es el método ideal de utilizar la librerías. Lo ideal es trabajar en los controladores debido a que así se sigue la lógica MVC. Si se empieza a tocar vistas, perdemos el control de la estructura y complicamos el mantenimiento del código.

Espero que os haya sido de utilidad el artículo para sber cómo cómo llamar en CodeIgniter 3 un modelo o librería desde una vista.