En este artículo vamos compartir un uso interesante de las vistas con CodeIgniter. Se trata de cómo visualizar una vista dentro de otra.
Suponiendo que se quiere hacer una vista como la siguiente (más larga, obviamente…), donde se tiene una especie de sub menú, y según la opción escogida cambias en contenido de abajo del área blanca.
Aquí se puede usar ajax para pedirle al controlador el string con los datos, y asignarlos como html a algún div que esté ubicado en el área blanca.
Pero como alternativa, porque quizás no se quiera usar java script para esto, se puede usar las funciones de carga de vistas de CodeIgniter para pasar el contenido deseado.
Bueno, primero recordemos que CodeIgniter permite cargar las vistas usando load->view
:
$data['arg_1'] = "Value of first argument";
$data['arg_2'] = "3";
$this->load->view('my_view.php', $data);
Y que luego en la vista (es decir, en my_view.php
), puedes usar el contenido del arreglo $data
(o cualquier nombre que se le ponga) en forma de variables de php, es decir, $arg_1
y
$arg_1
, según el ejemplo.
Usando esto como base, se puede pasar toda una vista como variable, bastaría con escribir:
//parámetros que le voy a pasar a la vista interior o “contenido”
$data['arg_1'] = "Value of first argument";
$data['arg_2'] = "3";
//cargo la vista contenido en una variable
$content = $this->load->view('my_view.php', $data, true);
//paso el contenido en forma de variable a la vista general
$data2['content'] = $content;
$this->load->view('general_view.php', $data2);
Y en la vista general, a la que le vas a introducir el contenido pasado, solamente tienes que poner echo $content
en el lugar en que quieras que salga la “sub-vista”.
echo $content;
Lo que debes notar es que en la carga de la vista “contenido”, se le ha pasado un tercer parámetro a la función load->view
, con valor true. Este parámetro opcional cambia completamente el comportamiento de la función. Si está en false u omitido, envía al navegador la vista pasada como parámetro; si está en true, devuelve la vista como una cadena o string para que puedas procesarla a conveniencia.
Si en el procesamiento interno de la vista que hemos llamado “contenido”, no necesitas pasar ningún dato desde el controlador, entonces pones el segundo parámetro vacío ('').
Para terminar nuestro ejemplo solamente faltaría hacer una función en el controlador que reciba por GET o POST algún identificador de la opción escogida, y según el caso, cargar el contenido deseado y finalmente pasarlo para la vista principal.
Como se ve es muy sencillo. Espero haya resultado útil.
Muy util tu publicacion.Carlos.E
ResponderEliminar