
En el apartado anterior configuramos las vistas y una plantilla para ahorrarnos repetir código, a las vistas las pasamos unas variables como titulo encabezado, las listas de datos que queramos mostrar . . . Veamos como podemos llamar a estas vistas y pasar variables a las mismas.
En la carpeta "public
" (la única carpeta que realmente necesita ser accesible para el navegador) vamos a tener dos archivos: "familias.php
" que se encargará de llamar a la vista "vistaFamilias.blade.php
" y pasar las variables necesarias, y "productos.php
" que hará lo mismo con la vista "vistaProductos.blade.php
". Fíjate en el código.
Página: "productos.php
"
<?php
require '../vendor/autoload.php';
use Philo\Blade\Blade;
use Clases\Producto;
$views = '../views';
$cache = '../cache';
$blade = new Blade($views, $cache);
$titulo='Productos';
$encabezado='Listado de Productos';
$productos=(new Producto())->recuperarProductos();
echo $blade->view()->make('vistaProductos', compact('titulo', 'encabezado', 'productos'))->render();
El funcionamiento es muy sencillo:
-
Con el "
require
" llamamos al archivo "autoload.php
" de la carpeta "vendor
" (esta carpeta la crea automáticamente "composer" con las librerías y clases necesarias. En este proyecto lo necesario para que funcione Blade y el autoload) -
Las líneas del "
use
" son para poder usar nuestras Clases y las de "Philo\Blade
" (acuérdate delnamespace
de las mismas que era Clase). -
Las siguientes son para indicar la ruta relativa de las carpetas "
views
" y "cache
" y guardarla en sendas variables. -
En la siguiente nos creamos un objeto de la clase "
Blade
"
, le pasamos las rutas de las carpetas "views
" y "cache
" e inicializamos las variables que pasaremos a la vista:$titulo, $encabezado y $productos
. Esta última línea la hemos simplificado, en realidad podíamos haber puesto:$productos = new Productos(); $productos->recuperarProductos();
-
En la última línea lamamos a la vista: '
vistaProductos'
de la carpeta "views
" y le pasamos usando "compact()
" las tres variables:$titulo, $encabezado y $productos
. En realidad a la vista hay que pasarle un array asociativo "nombre de la variable=>valor
" que es lo que hace precisamente el método "compact()
".
Página: "familias.php
"
<?php
require '../vendor/autoload.php';
use Philo\Blade\Blade;
use Clases\Familia;
$views = '../views';
$cache = '../cache';
$blade = new Blade($views, $cache);
$titulo='Familias';
$encabezado='Listado de Familias';
$familias=(new Familia())->recuperarFamilias();
echo $blade->view()->make('vistaFamilias', compact('titulo', 'encabezado', 'familias'))->render();
Si te fijas es igual a lo que hicimos en "productos.php
".
A continuación se deja un enlace con los archivos del proyecto. Para poder ver el mismo funcionando tendréis que tener Composer instalado hacer "composer init
" instalar la librería de Blade y autoload y hacer "composer install"
. Descargar archivos. (zip - 5,71 KB)