Saltar al contenido principal

Creación de vistas

Laravel utiliza Blade, un motor de plantillas propio, que permite generar vistas dinámicas de forma sencilla, segura y con sintaxis clara. Blade facilita la separación de la lógica de presentación de la lógica de negocio y ofrece funcionalidades como herencia de plantillas, secciones, componentes y directivas personalizadas.

Creación de una vista

Las vistas se almacenan en la carpeta resources/views y tienen extensión .blade.php. Por ejemplo, para crear una vista de usuarios:

resources/views/usuarios/index.blade.php

Contenido básico de la vista:

<!DOCTYPE html>
<html>
<head>
<title>Listado de Usuarios</title>
</head>
<body>
<h1>Usuarios</h1>
<ul>
@foreach($usuarios as $usuario)
<li>{{ $usuario->nombre }} ({{ $usuario->email }})</li>
@endforeach
</ul>
</body>
</html>

En este ejemplo:

  • @foreach y @endforeach son directivas de Blade para bucles.
  • {{ $usuario->nombre }} imprime contenido de manera segura, escapando HTML para evitar XSS.

Herencia de plantillas

Blade permite definir plantillas base y extenderlas en vistas específicas:

Plantilla base:

resources/views/layouts/app.blade.php
<!DOCTYPE html>
<html>
<head>
<title>@yield('titulo')</title>
</head>
<body>
<header>
<h1>Mi Aplicación</h1>
</header>

<main>
@yield('contenido')
</main>
</body>
</html>

Vista que extiende la plantilla:

resources/views/usuarios/index.blade.php
@extends('layouts.app')

@section('titulo', 'Listado de Usuarios')

@section('contenido')
<ul>
@foreach($usuarios as $usuario)
<li>{{ $usuario->nombre }} ({{ $usuario->email }})</li>
@endforeach
</ul>
@endsection

Pasar datos desde el controlador a la vista

En el controlador, se envían los datos a la vista mediante el método view():

use App\Models\Usuario;

public function index()
{
$usuarios = Usuario::all();
return view('usuarios.index', compact('usuarios'));
}
  • compact('usuarios') crea un array con la variable $usuarios para que esté disponible en la vista.

Buenas prácticas y convenciones

  • Mantener la lógica mínima en las vistas; la mayoría de la lógica debe residir en controladores o servicios.
  • Utilizar Blade para imprimir datos de forma segura ({{ }}) y evitar inyecciones de código.
  • Organizar vistas en carpetas por módulos o recursos (usuarios/, tareas/).
  • Reutilizar plantillas base y componentes para mantener consistencia visual.
  • Evitar mezclar consultas a la base de datos dentro de las vistas; siempre pasar los datos desde el controlador.