Laravel es uno de los frameworks PHP más populares por su simplicidad, elegancia y su capacidad para construir aplicaciones robustas de forma eficiente. Un componente clave en cualquier aplicación web es la reutilización de código, y las plantillas principales juegan un rol fundamental en este aspecto. Crear una plantilla principal en Laravel permite definir una estructura base que se puede extender a diferentes vistas, facilitando el mantenimiento y la consistencia del diseño.

En este post, veremos cómo crear una plantilla principal para tu sistema en Laravel, paso a paso.

1. Configuración inicial

Si no has iniciado un proyecto de Laravel, primero debes crear uno. Puedes hacerlo mediante el comando:

composer create-project --prefer-dist laravel/laravel NombreDelProyecto

Una vez creado el proyecto, navega hasta el directorio del mismo:

cd NombreDelProyecto

Una vez que hayas creado tu proyecto, abre Visual Studio Code. Puedes hacer esto directamente desde la terminal con:

code .

2. Crear la estructura básica para las vistas

Laravel organiza las vistas dentro del directorio resources/views. Para implementar la plantilla principal, es recomendable crear una carpeta llamada layouts donde almacenaremos nuestra plantilla base.

Dentro de esta carpeta, crearemos un archivo llamado app.blade.php. Este archivo servirá como la plantilla principal:

3. Definir la plantilla principal (Master Layout)

Edita el archivo app.blade.php con la estructura HTML básica. Aquí es donde definirás las secciones principales de tu plantilla, como el encabezado, el pie de página y el contenido dinámico que se insertará en las vistas hijas.

<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>@yield('title', 'Mi Aplicación')</title>

<!-- Incluye tus hojas de estilo aquí -->
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
</head>
<body>
<!-- Encabezado -->
<header>
<nav>
<!-- Aquí va tu menú de navegación -->
</nav>
</header>

<!-- Contenido dinámico -->
<main>
@yield('content')
</main>

<!-- Pie de página -->
<footer>
<p>&copy; 2024 Mi Aplicación. Todos los derechos reservados.</p>
</footer>

<!-- Incluye tus scripts aquí -->
<script src="{{ asset('js/app.js') }}"></script>
</body>
</html>

En esta plantilla, @yield('title') y @yield('content') son secciones que podrán ser reemplazadas en las vistas hijas.

4. Crear una vista que extienda la plantilla principal

Ahora que tenemos la plantilla principal, podemos crear vistas hijas que la extiendan. Como ejemplo, crea un archivo home.blade.php en el directorio resources/views.

Edita este archivo para extender la plantilla principal:

@extends('layouts.app')

@section('title', 'Página de Inicio')

@section('content')
<h1>Bienvenido a mi Aplicación</h1>
<p>Esta es la página de inicio.</p>
@endsection

En este ejemplo, la vista home.blade.php está heredando de la plantilla app.blade.php y llenando las secciones title y content.

5. Configurar la ruta para la vista

Finalmente, debes definir una ruta que apunte a la vista que acabas de crear. Abre el archivo routes/web.php y añade una nueva ruta:

Route::get('/', function () {
return view('home');
});

Esta ruta renderizará la vista home.blade.php cuando accedas al dominio raíz de tu aplicación.

6. Ejecutar el servidor

Para ver el resultado de tu plantilla principal en acción, inicia el servidor de desarrollo de Laravel:

php artisan serve

Accede a http://localhost:8000 en tu navegador, y deberías ver la página de inicio con el diseño definido en tu plantilla principal.

Conclusión

Crear una plantilla principal en Laravel es un paso esencial para mantener la coherencia y facilitar el desarrollo de aplicaciones complejas. Al separar la estructura base del contenido dinámico, puedes reutilizar el diseño y enfocarte en el desarrollo de nuevas funcionalidades. Sigue estos pasos y estarás listo para construir una aplicación Laravel bien organizada y fácil de mantener.

¿Tienes más dudas sobre Laravel? ¡Déjalas en los comentarios!