Blade y views en Laravel
Estructura de una vista en Laravel
Las vistas son consideradas el contenido de un proyecto que es mostrado al usuario donde el usuario puede interactuar y desde donde puede realizar acciones. En Laravel se alojan en el directorio resources/views y contienen un sufijo .blade.
Laravel dispone de un sistema de plantillas llamado blade similar al de otros frameworks que permite dar más flexibidad a la composición de las vistas y dotan de características propias que proporcionan seguridad al proyecto. Con este sistema es posible crear plantillas y después integrar estas plantillas a las vistas asignando o modificando secciones de dicha plantilla. De esta forma se evita repetición de código utilizando la misma plantilla o plantillas para varias vistas.
Estructura de una plantilla:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="favicon.ico">
<title>@yield("title")</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous">
<!-- Custom styles for this template -->
<link href="{{ asset("css/style.css")}}" rel="stylesheet">
</head>
<body>
<div class="row mt-3">
<div class="col-8">
@yield("content")
</div>
<div class="col-4">
@section("sidebar")
<h2>Barra Lateral</h2>
@show
</div>
</div>
</main>
<footer class="footer">
<div class="container">
<span class="text-muted">Place sticky footer content here.</span>
</div>
</footer>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="//code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js" integrity="sha384-cs/chFZiN24E4KMATLdqdvsezGxaGsi4hLGOzlXwp5UZB1LY//20VyM2taTB4QvJ" crossorigin="anonymous"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js" integrity="sha384-uefMccjFJAIv6A+rW+L4AHf99KvxDjWSu1z9VI8SKNVmz4sk7buKt/6v9KI65qnm" crossorigin="anonymous"></script>
</body>
</html>
Estructura de una vista que extiende de una plantilla:
@extends("layout")
@section("title","Usuario {$id}")
@section("content")
Mostrando detalle del usuario: {{$id}}
@endsection
Laravel permite mostrar los datos con métodos propios de laravel pero también permite con puro php :
echo $datos;
Laravel dispone de opciones que actúan como filtro aumentando la seguridad en el flujo de datos que PHP :
echo e($datos);
{{ $datos }}
Para realizar un include se hace de forma similar a como se haría en PHP pero incluyendo la @ al comienzo y prescindiendo de la extensión .php:
@include("nombre_de_archivo")
Para poder comentar es necesario iniciar sesión