Laravel 16 septiembre, 2018 0

Blade: motor de plantillas – parte 1

Blade es el motor de platillas que viene integrado con Laravel, nos permite escribir PHP de manera sencilla, elegante y divertida.

Para utilizar blade es suficiente con agregar la extensión “blade” a las vistas.

Hagamos este cambio con la vista “saludos.php” por “saludos.blade.php” y dupliquemos la linea de código que imprime la variable nombre para ver las diferencias.

<h1>Saludos para <?php echo $nombre; ?></h1>
<h1>Saludos para {{ $nombre }}</h1>

Al ingresar al navegador podremos notar que ambas líneas imprimen el mismo resultado, esto quiere decir que blade no nos obliga a usar su sintaxis, ademas la segunda línea se ve mucho mas limpia y esto sin afectar el rendimiento.

Si nos vamos a la carpeta “./framework/views/“, podremos ver la vista es compilada y almacenada en otro archivo diferente.

Este proceso de compilación sucede una vez y solo vuelve a suceder si se detecta un cambio,  mientras no cambie el archivo “saludos.blade.php” no volverá a ejecutarse.

En su lugar utilizara el archivo ya compilado.

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<title>Vistas - Saludos[parámetros}]</title>
	<link rel="stylesheet" href="">
</head>
<body>
	<h1>Saludos para <?php echo $nombre; ?></h1>
	<h1>Saludos para <?php echo e($nombre); ?></h1>
</body>
</html>

Si observamos en la linea 11 (la procesada por blade), veremos que la variable nombre esta dentro de una función llamada “e“. Esta función es un helpers que viene con Laravel que pasa la variable por la función nativa de PHP “htmlentities” para protegernos de lo que se conoce como XSS (Cross Site Scripting) o Inyección de código maliciosa.

Imaginemos que tenemos una variable con el siguiente valor:

$html = '<h4>Contenido HTML</h4>';

Ya en la vista imprimimos la variable usando la sintaxis de blade anteriormente vista, lo que podremos notar en el navegador es que nos mostrara las etiquetas “{{ $html }}” , como se muestra acontinuación

Para evitar lo anterior blade también tiene una sintaxis “{!! $html !!}“, pero esta no se debe usar a menos que estemos seguro de que es código seguro, ya que de lo contrario esto puede ser peligroso para nuestra aplicación.