Documentos de Académico
Documentos de Profesional
Documentos de Cultura
>cd lara8Blade
Abrimos Visual Studio con el comando code .
>code .
Creamos una base de datos en phpmyadmin con el mismo nombre del proyecto
lara8Blade, solo la base de datos basia sin tablas, como lo puedes ver en la siguiente
imagen:
Ahora debemos ejecutar una migración en la terminal con el comando:
>php artisan migrate
Plantillas Blade
views/layouts/vistapadre.blade.php
Una vez creado el archivo, vamos a Bootstrap 5 hacemos click en el botón Get Started
y vamos a buscar el código de la plantilla Starter Template, aprovechando que Bootstrap 5 ya
no trabaja con Jquery y es más ligero. Podemos eliminar los comentarios y después del body
podemos aprovecha y volvemos a la página web de Bootstrap y colocamos en el body un
componente navbar de Bootstrap, el cual debe estar encerrado dentro de una etiqueta div con
la clase containder-fluid para que abarque el 100% del ancho de la página. El código final
debe quedar así:
vistapadre.blade.php
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css" re
l="stylesheet" integrity="sha384-
wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossori
gin="anonymous">
<title>Hello, world!</title>
</head>
<body>
<h1>Plantilla Padre</h1>
<div class="container-fluid">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-
target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-
expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-
disabled="true">Disabled</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-
label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
</div>
@yield('contenidoPrincipal')
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.bundle.min.js" inte
grity="sha384-p34f1UUtsS3wqzfto5wAAmdvj+osOnFyQFpp4Ua3gs/
ZVWx6oOypYoCJhGGScy+8" crossorigin="anonymous"></script>
</body>
</html>
@yield(‘contenidoPrincipal’);
Nota: este código va debajo del navbar
La lógica de las plantillas Blade en que ellas van a extender de la plantilla padre y de
hay en adelante vamos a crear todas las paginas de nuestra aplicación teniendo como base la
vistapadre, es un método muy organizado para trabajar y que hace que nuestro código sea
mantenible en el tiempo.
Para poder diferenciar las vista hijo de la plantilla padre, vamos a colocar un div con la
clase container de Bootstrap que nos crea unos márgenes a los lados, colocamos un h1 con
la frese contenido vista1 y debajo un componente de tres tarjetas.
Vista1.blade.php
@extends('layouts.vistapadre')
@section('contenidoPrincipal')
<div class="container mt-5">
<h1>Contenido de Vista1</h1>
<div class="row row-cols-1 row-cols-md-3 g-4">
<div class="col">
<div class="card h-100">
<img src="https://loremflickr.com/640/360" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a
natural lead-in to additional content. This content is a little bit longer.</p>
</div>
</div>
</div>
<div class="col">
<div class="card h-100">
<img src="http://placeimg.com/640/360/any" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a short card.</p>
</div>
</div>
</div>
<div class="col">
<div class="card h-100">
<img src="https://picsum.photos/640/360" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">This is a longer card with supporting text below as a
natural lead-in to additional content.</p>
</div>
</div>
</div>
</div>
</div>
@endsection
Nota: este componente card de Bootstrap 5 tiene una etiqueta img la cual le coloque un
enlace a picsum,photos una página que genera imágenes aleatorias, la puedes usa en la
siguiente dirección: https://loremipsum.io/es/21-of-the-best-placeholder-image-generators/
ROUTES
Ahora para poder ver todos los cambios realizados vamos a la carpeta de rutas routes/web y
vamos a cambiar donde dice welcome por vista1.
Route::get('/', function () {
return view('welcome');
});
Route::get('/', function () {
return view(‘vista1’);
})->name(‘home’);
Nuestro código contendrá un div container mt-5, h2 con la frase Contenido Vista 2 y
una tabla con la clase table-hover mt-5.
Vista2.blade.php
@extends('layouts.vistapadre')
@section('contenidoPrincipal')
<div class="container mt-5">
<h2>Contenido Vista 2</h2>
<table class="table table-hover mt-5">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First</th>
<th scope="col">Last</th>
<th scope="col">Handle</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Mark</td>
<td>Otto</td>
<td>@mdo</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Jacob</td>
<td>Thornton</td>
<td>@fat</td>
</tr>
<tr>
<th scope="row">3</th>
<td colspan="2">Larry the Bird</td>
<td>@twitter</td>
</tr>
</tbody>
</table>
</div>
@endsection
En nuestras rutas vamos a colocar una ruta que me permita ver la vista2
Route::get('/', function () {
return view('vista1');
})->name('home');
Route::middleware(['auth:sanctum', 'verified'])->get('/dashboard', function () {
return view('dashboard');
})->name('dashboard');
Route::get('/vista2', function () {
return view('vista2');
})->name('reporte');
Nota: Observa que en las rutas colocamos ->name(‘home’); esta es una convención de
laravel que nos permite colocarles nombres a las rutas facilitando que en el menú de
navegación al colocar los enlaces podamos usar la siguiente estructura {{ route(‘home’) }} en
los link del navbar.
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css" re
l="stylesheet" integrity="sha384-
wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossori
gin="anonymous">
<title>Hello, world!</title>
</head>
<body>
<div class="container-fluid">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-
target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-
expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="{{ route('home') }}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ route(reporte) }}">Report</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-
disabled="true">Disabled</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-
label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
</div>
@yield('contenidoPrincipal')
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.bundle.min.js" inte
grity="sha384-p34f1UUtsS3wqzfto5wAAmdvj+osOnFyQFpp4Ua3gs/
ZVWx6oOypYoCJhGGScy+8" crossorigin="anonymous"></script>
</body>
</html>