Vistas
Laravel nos permite separar la logica de presentacion de la logica de nuestra aplicacion a travez de las vista.
Crear una vista
Las vista generalmente se encuentran en el directorio /resource/views
de la carpeta principal de nuestro proyecto. Crear una vista con Laravel simplemente necesitas crear un archivo .php
o .blade.php
en el directorio /views
.
Retornar una vista
Para retornar una vista retornamos el llamado a la funcion view
pasando como argumento el nombre de la vista. El nombre del archivo es relativo a la carpeta resource/views
y no es necesario indicar la extension del archivo.
Pasar datos a la vista
Podemos pasar datos a la vista mediante un arreglo asociativo, donde las llaves son el nombre de las variables que queremos pasar a la vista y el valor son los datos que queremos asoociar.
$users = [
'Joel',
'Ellie',
'Tess'
];
return view('users', [
'users' => $users
]);
Tambien podemos utilizar el metodo with
encadenandolo al llamado a la funcion view
para pasar datos a la vista en formato de array asociativo.
return view('users')->with([
'users' => $users
]);
Tambien podemos pasar las variable de forma individual
return view('users')
->with('users', $users)
->with('title', 'Listado de usuarios');
Blade, sistema de plantilla
Imprimir variable
Si queremos imprimir una variable, podemos hacerlo utilizando la sintaxis de doble llaves {{ }}
<li>{{ $user }}</li>
Ciclos y estructuras
Si queremos utilizar ciclos y estructuras condicionales, podemos utilizar directivas, las directivas de Blade van precedidas por arroba @
y luego el nombre de la directiva.
Directiva @foreach
@foreach ($users as $user)
<li>{{ $user }}</li>
@endforeach
Directiva @if
@if (! empty($users))
...
@endif
Directiva @if @else
@if (! empty($users))
...
@else
<p>No hay usuarios registrados.</p>
@endif
Directiva @elseif
@if (! empty($users))
...
@elseif ($users < 3)
<p>Hay menos de 3 usuarios registrados.</p>
@else
<p>No hay usuarios registrados.</p>
@endif
Directiva @unless funciona como un condicional inverso
@unless (empty($users))
<ul>
@foreach ($users as $user)
<li>{{ $user }}</li>
@endforeach
</ul>
@else
<p>No hay usuarios registrados.</p>
@endunless
Layouts con Blade
A medida que nuestro proyecto crece nuestra plantillas se vulven mas complejas y es inevitable encontrarnos con que estamos repitiendo etiquetas y estructuras que podriamos compartir entre multiples vista. Laravel nos ofrece con Blade unas directiva para evitar la repeticion de etiquetas.
Directiva @include
Para usarla solamente tenemos que pasarle el nombre del archivo que queremos incluir
@include('header')
<h1>{{ $title }}</h1>
...
@include('footer')
Helper asset()
Nos dara la ruta absoluta al archivo indicado.
<link href="{{ asset('css/style.css') }}" rel="stylesheet">
Layout principal
En lugar de separar nuestras plantilla en diferentes archivos, podemos crear una sola plantilla que tendra la estructura de nuestro diseno. Podemos llamar a esta plantilla layout.blade.php
por ejemplo y colocar todo el codigp de nuestro diseno alli.
Utilizando la directiva @yield
dentro de esta plantilla podemos indicar secciones y luego en plantillas individuales podemos colocar el contenido de dichas secciones.
<main role="main" class="container">
@yield('content')
</main>
Extender una plantilla
En cada una de nuestras plantilla individuales en lugar de incluir el header o footer le indicamos a Laravel que la vista debe extender de layout.blade.php
@extends('layout')
Luego utilizamos la directiva @section
, pasando como argumento el nombre de seccion.
@section('title') Usuario {{ $id }} @endsection
@section('content')
<!-- Contenido de la sección -->
@endsection