¿Qué son las vistas?
Las vistas en Laravel son la parte visual de nuestra aplicación. Hace de telón visual entre los modelos y los controladores.
Básicamente se podrían definir como una plantilla de texto plano que es devuelta al navegador en lenguaje HTML. Son archivos de tipo PHP y están ubicadas en /resources/views (recordemos que estamos en Laravel 5).
<!-- resources/views/greeting.blade.php --> <html> <body> <h1>Hola, <?php echo $nombre; ?></h1> </body> </html> // en \routes\web.php creamos la ruta... <?php Route::get('/', function () { return view('greeting', ['nombre' => 'Juan']); });
Diferenciación entre vistas y plantillas
Técnicamente, se reconoce a la vista como la llamada a las repuestas mediante el método view(); mientras que una plantilla es el cuerpo estructurado de etiquetas HTML y PHP. Sin la restricción de otros motores de plantillas.
Laravel hace uso del motor Blade para construir las plantillas. Los archivos blade tienen la extensión blade.php que son almacenados en \resources\views.
Pasar datos a las vistas
Devolver plantillas básicas está muy bien pero, ¿y si nos vemos en la necesidad de pasar parámetros en la ruta para usarlos en la vista?. El método view() admite como segundo parámetro un array que se pasa a la plantilla de la ruta. Cuando recibe el array, las claves son extraídas a variables que tienen como nombre la clave del array, y el valor que tenían en esta.
<?php Route::get('/{color}', function ($color) { return view('ardillas', ['ardilla'=>$color]); });
En esta ruta se toma el parámetro $color y se pasa a través del segundo argumento de view(). Esto habilita el uso de la clave ‘ardilla’ en una plantilla llamada ‘ardillas’.
(NOTA: las claves del array pasan a ser variables en la plantilla)
<h1>Me gustan las ardillas de color <?php echo $ardilla; ?></h1>
Redirecciones
Las redirecciones son un tipo especial de respuesta que envía al usuario a otra dirección diferente de la solicitada. El método para su uso es redirect() y se uso quiere solo una ruta:
Route::get('/user/profile', function(){ return redirect('/'); });
El ejemplo anterior redirige a la raíz si se ha intentado acceder a la URI: /user/profile.
Atajos de respuestas
Este bloque implementará ciertas respuestas que nos brinda Laravel para hacer tareas mucho más fácilmente.
Respuestas Json
Si en alguna ocasión necesitamos que nuestra aplicación lance datos en formato JSON, Laravel nos facilita el método Response::json() que configurará un objeto de respuesta con detalles específicos para JSON.
Route::get('respuesta/json', function(){ $data = array("title1","title2","title3"); return Response::json($data); });
Respuestas de descarga
El servicio de archivos para su descarga viene implementado en Laravel mediante el método download() de la clase Response, generando un objeto de respuesta que devuelve al usuario la típica ventana de descarga para el fichero que le hemos especificado.
Route::get('respuesta/descarga', function(){ return Response::download($PathToFile); });
Respuestas de file
El método file se usa para mostrar archivos directamente en el navegador como son imágenes o documentos PDF.
Route::get('respuesta/file', function(){ return Response::file($PathToFile); });