> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Vistas

> Explicamos cómo crear vistas en Laravel, cómo devolverlas desde rutas o controladores y cómo pasarles datos.

## 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](/es/blade).

```blade theme={null}
<!-- 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`.

```php theme={null}
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:

```shell theme={null}
php artisan make:view greeting
```

La extensión `.blade.php` indica al framework que el archivo contiene una [plantilla Blade](/es/blade).

## Cómo devolver una vista

Una vez creada la vista, puedes devolverla desde una ruta o controlador usando el helper global `view`.

```php theme={null}
Route::get('/', function () {
    return view('greeting', ['name' => 'Taro']);
});
```

También puedes usar la fachada `View`.

```php theme={null}
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í:

```php theme={null}
return view('admin.profile', $data);
```

<Warning>
  No incluyas el carácter `.` en los nombres de directorio de las vistas.
</Warning>

### 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.

```php theme={null}
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`.

```php theme={null}
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.

```php theme={null}
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.

```php theme={null}
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 theme={null}
<?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.

```shell theme={null}
php artisan view:cache
```

Para limpiar la caché de vistas usa:

```shell theme={null}
php artisan view:clear
```

## Próximos pasos

<Card title="Plantillas Blade" icon="code" href="/es/blade">
  Aprende a construir vistas dinámicas con la sintaxis de Blade.
</Card>


## Related topics

- [Desarrollo de paquetes Laravel](/es/advanced/package-development.md)
- [Pruebas HTTP](/es/http-tests.md)
- [Guía de actualización de Laravel 12 a 13](/es/blog/upgrade-12-to-13.md)
- [Paginación](/es/pagination.md)
- [Laravel Fortify y los starter kits](/es/advanced/fortify.md)
