Saltar al contenido principal

Introducción

Devolver un documento HTML completo como cadena desde una ruta o un controlador no es práctico. Con las vistas puedes escribir todo el HTML en archivos independientes. Las vistas separan la lógica de la aplicación/los controladores de la lógica de presentación, y se guardan en el directorio resources/views. En Laravel, lo habitual es escribirlas usando el lenguaje de plantillas Blade.
<!-- resources/views/greeting.blade.php -->
<html>
    <body>
        <h1>Hola, {{ $name }}</h1>
    </body>
</html>
Esta vista se guarda en resources/views/greeting.blade.php y puedes devolverla con el helper global view.
Route::get('/', function () {
    return view('greeting', ['name' => 'Taro']);
});

Creación de vistas

Para crear una vista, coloca un archivo con la extensión .blade.php en el directorio resources/views, o usa el comando Artisan:
php artisan make:view greeting
La extensión .blade.php indica al framework que el archivo contiene una plantilla Blade.

Cómo devolver una vista

Una vez creada la vista, puedes devolverla desde una ruta o controlador usando el helper global view.
Route::get('/', function () {
    return view('greeting', ['name' => 'Taro']);
});
También puedes usar la fachada View.
use Illuminate\Support\Facades\View;

return View::make('greeting', ['name' => 'Taro']);
El primer argumento del helper view corresponde al nombre del archivo de vista dentro de resources/views. El segundo argumento es un array con los datos que se pondrán a disposición de la vista.

Directorios de vistas anidados

Las vistas pueden anidarse en subdirectorios de resources/views. Para referenciar una vista anidada usa la notación de “punto”. Por ejemplo, una vista almacenada en resources/views/admin/profile.blade.php se devuelve así:
return view('admin.profile', $data);
No incluyas el carácter . en los nombres de directorio de las vistas.

Devolver la primera vista existente

Con el método first de la fachada View puedes devolver la primera vista que exista dentro de un array.
use Illuminate\Support\Facades\View;

return View::first(['custom.admin', 'admin'], $data);

Comprobar la existencia de una vista

Para comprobar si una vista existe, usa el método exists de la fachada View.
use Illuminate\Support\Facades\View;

if (View::exists('admin.profile')) {
    // ...
}

Pasar datos a una vista

Como se ha visto en los ejemplos anteriores, puedes pasar un array de datos a la vista para usarlos dentro de ella.
return view('greetings', ['name' => 'Hanako']);
Con este método, los datos deben ser un array de pares clave-valor. Dentro de la vista puedes acceder a cada valor mediante su clave. También puedes añadir datos individualmente con el método with. with devuelve la instancia del objeto vista, por lo que permite encadenar métodos.
return view('greeting')
    ->with('name', 'Hanako')
    ->with('occupation', 'Ingeniera');

Compartir datos entre todas las vistas

Si deseas compartir datos entre todas las vistas, usa el método share de la fachada View. Normalmente se hace dentro del método boot de un service provider.
<?php

namespace App\Providers;

use Illuminate\Support\Facades\View;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Arranque de los servicios de la aplicación
     */
    public function boot(): void
    {
        View::share('appName', 'MyApp');
    }
}

Optimización de vistas

Por defecto, las plantillas Blade se compilan bajo demanda. Como la compilación ocurre en el momento de la solicitud, puede afectar ligeramente al rendimiento. Con el comando Artisan view:cache puedes precompilar todas las vistas que usa tu aplicación. Se recomienda ejecutarlo como parte del proceso de despliegue.
php artisan view:cache
Para limpiar la caché de vistas usa:
php artisan view:clear

Próximos pasos

Plantillas Blade

Aprende a construir vistas dinámicas con la sintaxis de Blade.
Última modificación el 13 de julio de 2026