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:
@foreachy@endforeachson 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$usuariospara 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.