Vistas
Las vistas son la forma de presentar el resultado (una pantalla de nuestro sitio web) de forma visual al usuario, el cual podrá interactuar con él y volver a realizar una petición. Las vistas además nos permiten separar toda la parte de presentación de resultados de la lógica (controladores) y de la base de datos (modelos). Por lo tanto no tendrán que realizar ningún tipo de consulta ni procesamiento de datos, simplemente recibirán datos y los prepararán para mostrarlos como HTML.
Definir vistas
Las vistas se almacenan en la carpeta resources/views
como ficheros PHP, y por lo tanto tendrán la extensión .php
. Contendrán el código HTML de nuestro sitio web, mezclado con los assets (CSS, imágenes, Javascripts, etc. que estarán almacenados en la carpeta public
) y algo de código PHP (o código Blade de plantillas, como veremos más adelante) para presentar los datos de entrada como un resultado HTML.
A continuación se incluye un ejemplo de una vista simple, almacenada en el fichero resources/views/home.php
, que simplemente mostrará por pantalla ¡Hola <nombre>!
, donde <nombre>
es una variable de PHP que la vista tiene que recibir como entrada para poder mostrarla.
Referenciar y devolver vistas
Una vez tenemos una vista tenemos que asociarla a una ruta para poder mostrarla. Para esto tenemos que ir al fichero routes.php
como hemos visto antes y escribir el siguiente código:
En este caso estamos definiendo que la vista se devuelva cuando se haga una petición tipo GET a la raíz de nuestro sitio. El único cambio que hemos hecho con respecto a lo que vimos en la sección anterior de rutas ha sido en el valor devuelto por la función, el cual genera la vista usando el método view
y la devuelve. Esta función recibe como parámetros:
El nombre de la vista (en este caso
home
), el cual será un fichero almacenado en la carpetaviews
, acordaros que la vista anterior de ejemplo la habíamos guardado enresources/views/home.php
. Para indicar el nombre de la vista se utiliza el mismo nombre del fichero pero sin la extensión.php
.Como segundo parámetro recibe un array de datos que se le pasarán a la vista. En este caso la vista recibirá una variable llamada
$nombre
con valor "Javi".
Como hemos visto para referenciar una vista únicamente tenemos que escribir el nombre del fichero que la contiene pero sin la extensión .php
. En el ejemplo, para cargar la vista almacenada en el fichero home.php
la referenciamos mediante el nombre home
, sin la extensión .php
ni la ruta resources/views
.
Las vistas se pueden organizar en sub-carpetas dentro de la carpeta resources/views
, por ejemplo podríamos tener una carpeta resources/views/user
y dentro de esta todas las vistas relacionadas, como por ejemplo login.php
, register.php
o profile.php
. En este caso para referenciar las vistas que están dentro de sub-carpetas tenemos que utilizar la notación tipo "dot", en la que las barras que separan las carpetas se sustituyen por puntos. Por ejemplo, para referenciar la vista resources/views/user/login.php
usaríamos el nombre user.login
, o la vista resources/views/user/register.php
la cargaríamos de la forma:
Pasar datos a una vista
Como hemos visto, para pasar datos a una vista tenemos que utilizar el segundo parámetro del método view
, el cual acepta un array asociativo. En este array podemos añadir todas la variables que queramos utilizar dentro de la vista, ya sean de tipo variable normal (cadena, entero, etc.) u otro array o objeto con más datos. Por ejemplo, para enviar a la vista profile
todos los datos del usuario cuyo id
recibimos a través de la ruta tendríamos que hacer:
Laravel además ofrece una alternativa que crea una notación un poco más clara. En lugar de pasar un array como segundo parámetro podemos utilizar el método with
para indicar una a una las variables o contenidos que queremos enviar a la vista:
Vistas dentro de vistas
Laravel también permite anidar vistas, es decir, renderizar una vista dentro de otra vista. Por ejemplo, si queremos mostrar la vista almacenada en app/views/partials/view.php
dentro de la vista que habíamos creado en el ejemplo anterior (app/views/home.php
), tendríamos que hacer lo siguiente:
El código anterior generaría la vista padre (home
) y en su variable content
colocaría la vista hija partials.view
. Para indicar la ruta hasta vistas que están almacenadas dentro de carpetas, en lugar de escribir la barra /
como separador se utiliza el punto (.
).
Last updated