Documentacion Blade
-
Upload
jc-contreras-meneses -
Category
Documents
-
view
4 -
download
4
description
Transcript of Documentacion Blade
Qué es y cómo funciona Blade
Blade es básicamente un sub-lenguaje muy sencillo, que antes de ser usado por nuestra aplicación, es compilado a PHP plano. Para usar Blade, simplemente creen sus plantillas en el directorio views/ con la extensión .blade.php en vez de .php.
Por ejemplo:
Código :
views/template.blade.php
Ahora creen una ruta o controlador que llame a la plantilla (ya saben cómo, ¿Cierto?)
En caso de que no… En app/routes.php pongan esto:
Código :
Route::get('template', function () {
return View::make('template');
});
Ahora en views/template.blade.php escriban algo de HTML:
Código :
<h1>Hello Cristalab</h1>
Bastante básico, es decir, en este punto da igual si usamos Blade o no… Pero, vamos a ver:
Cómo escribir vistas dinámicas con Blade
Ok, supongamos que, como en ejemplos anteriores, queremos usar un nombre variable:
Código :
Route::get('template/{name}', function ($name) {
$name = ucwords(str_replace('-', ' ', $name));
return View::make('template')->with('name', $name);
});
En este caso, para hacer el ejemplo más interesante, lo pasamos por la ruta, y luego lo asignamos a la vista, con el método ->with() que va concatenado a View::make, fíjense:
Código :
View::make('template')->with('name', $name)
Ok, ahora en nuestra vista, si estuviéramos usando sólo PHP, tendríamos que escribir algo así:
Código :
<h1>Hello <?php echo $name ?></h1>
Pero gracias a Blade, podemos escribirlo así:
Código :
<h1>Hello {{ $name }}</h1>
Básicamente: {{ }} es un sustituto de <?php ?> que por un lado es más corto y fácil de escribir, por otro usar etiquetas PHP (<? ?>) se “mezcla” con las etiquetas del HTML, así que usar motores como Blade es más “limpio” por así decirlo.
Blade sólo reemplaza {{ * }} por <?php echo * ?>, es decir, todo el código PHP que quieras escribir es válido dentro de {{ }}, por ejemplo:
Código :
<h1>Hello {{ strtoupper($name) }}</h1>
Otros motores de plantillas para PHP más avanzados
como Smarty o Twig compiladores más poderosos, que permiten usar, por
ejemplo, sintaxis de punto para los arrays, la cual no es soportada por PHP,
etc.
Cómo escribir estructuras de control con Blade
Por último veremos cómo se escriben estructuras de control sencillas pero muy comunes como IF y FOREACH.
Blade tiene una sintaxis bien simple, por ejemplo:
Código :
@if ($name == 'Walter White' OR $name == 'Jesse Pinkman')
<h1>Goodbye Breaking Bad</h1>
@else
<h1>Hello {{ $name }}</h1>
@endif
Nuevamente, todo lo que está dentro del paréntesis del IF es PHP común y corriente, lo que cambia es que en vez de escribir:
Código :
<?php if (...): ?>
O:
Código :
<?php if (...) { ?>
Escribimos:
Código :
@if (...)
Es una sintaxis mucho más limpia y adecuada para nuestras vistas…
Por supuesto, si están escribiendo los ejemplos pueden ejecutarlos en el navegador, escribiendo algo como:
Código :
http://localhost/pruebalaravel/public/template/walter+white
Esto es con respecto a la sintaxis, pero Blade también nos brinda una herramienta potente para escribir vistas:
Uso de Layouts en Laravel con Blade
Casi todos los proyectos, por no decir todos, tienen un “layout” que consiste, por lo general en un header + un footer. Por ejemplo fíjense Cristalab.com ¿Han visitado esa página? Todas las páginas dentro del site cristalab.com llevan en la cabecera el logo de Cristalab + el menú etc. y en el pie de página tiene el menú repetido y la foto de Freddier en un pony (bueno no, pero sería más divertido).
Ese HTML que se repite en cada página se llama layout y en Blade podemos escribirlo así:
Creen una vista llamada:
Código :
views/layout.blade.php
Con el siguiente HTML de ejemplo:
Código :
<html lang="en">
<head>
<meta charset="utf-8">
<title>Aprendiendo Laravel</title>
</head>
<body>
@yield('content')
<hr />
Copyright 2013 - Todos los ponies reservados.
</body>
</html>
Y luego en views/template.blade.php coloquen lo siguiente:
Código :
@extends ('layout')
@section ('content')
<h1>Hello {{ $name }}</h1>
@stop
El PHP en nuestra ruta sigue igual, es decir, seguiremos invocando a template, no a layout:
Código :
View::make(‘template’)
Pero template a su vez “extiende” la plantilla layout, como si fuera un objeto hijo que extiende de un objeto padre:
Código :
<!-- views/template.blade.php →
@extends ('layout')
Ahora, si se fijan, en views/layout.blade.php pueden ver lo siguiente, dentro del body:
Código :
@yield('content')
Esa etiqueta de Blade permite definir una “sección” dinámica que puede ser reemplazada en la plantilla “hijo”, en este caso template.blade.php usando las etiquetas:
Código :
@section ('content')
<!-- HTML AQUI -->
@stop
Fíjense que “content” es el nombre de la sección en ambas plantillas. Por supuesto podemos crear tantas secciones como queramos:
Código :
<!-- views/layout.blade.php -->
<html lang="en">
<head>
<meta charset="utf-8">
<title>@yield('title', 'Aprendiendo Laravel')</title>
</head>
<body>
@yield('content')
<hr />
Copyright 2013 - Todos los ponies reservados.
</body>
</html>
Noten que el título HTML cambió a:
Código :
<title>@yield(‘title’, ‘Aprendiendo Laravel’)</title>
En este caso el segundo parámetro de @yield sería el valor por defecto, es
decir, si abrimos en el navegador nuestra dirección:
Código :
http://localhost/pruebalaravel/public/template/cristalab
Seguiremos viendo en el título del mismo la frase: Aprendiendo Laravel, que es nuestro título por defecto.
Pero si cambiamos views/template.blade.php a:
Código :
@extends ('layout')
@section ('title') Saludos a {{ $name }} @stop
@section ('content')
<h1>Hello {{ $name }}</h1>
@stop
Entonces el título ahora será, por ejemplo: “Saludos a Cristalab”. Tengan en cuenta que pueden crear tantas secciones como gusten, y que cada sección puede tener un valor por defecto y un valor distinto en cada sub-plantilla. Además pueden usar variables, etc. en cada sección.
Para finalizar, 2 tips:
1. En HTML, como ya deben saber, los comentarios se escriben así:
Código :
<!-- comentario -->
Y suelen ser útiles cuando el HTML que escribimos es muy complicado, sin embargo dichos comentarios se envían al navegador junto con el resto de las etiquetas, y esto no es siempre lo que queremos, dado que cualquiera podría leerlos y hacen el HTML un poco más pesado, etc…
Con Blade podemos escribir comentarios así:
Código :
{{-- Esto es un comentario --}}
Dichos comentarios no son compilados como HTML ni enviados al navegador.
2. A veces Blade no es suficiente y necesitamos PHP en nuestras plantillas, por ejemplo, para asignar una variable:
Código :
<?php $user = Auth::user() ?>
Es posible usar PHP plano dentro de Blade, sólo traten de mantener sus plantillas lo más limpias posibles, limiten el uso de PHP, y si en tal caso lo necesitan, escriban sólo sentencias sencillas y preferiblemente al inicio de la plantilla.