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

results matching ""

    No results matching ""