si ya tienes un archivo php y lo renombras no hace falta modificar la sintaxis del contenido.
la sintaxis blade te simplifica el codigo, veamos:
el parametro enviado es: <?php echo $parametro?>
quedaria asi:
el parametro enviado es: {{parametro }}
los archivos blade se compilan y generan un archivo php que se almacena en
storage/frmawork/views
siempre que no se hagan cambios al archivo original, el navegador llamara al archivo compilado.
si examinamos el archivo compilado veremos que la linea con sintaxis blade se tradujo a;
esta es la home, y el parametro enviado es: <?php echo e($parametro); ?>
la function e es un helper de laravel que pasa la variable por htmlentities
es decir imprime el contenido tal como viene y no lo interpreta.
por ejemplo si el parametro contiene codigo html o javascript este se mostrar tal cual y no se
"ejecutara". esto se hace para evitar "inyeccion de codigo malisioso"(xss: cross site scripting)
ejemplo:
Route::get('home/{parametro?}', ['as'=>'home', function($parametro=''){
$script= '<h2>esto es codigo html</h2>';
return view('home',compact('parametro','script'));
}]);
si la vista tiene esto es un script: {{$script}}
se mostrara esto es un script: <h2>esto es codigo html</h2>
si nuestra intencion es que se ejecute el codigo html debemos poner
esto es un script: { !!$script!! }
se imprimira:
esto es un script:
esto es codigo html
tambien se pueden imprimir listado de datos
$lista= ['uno','dos','tres','cuatro'];
return view('home',compact('parametro','script','lista'));
en la vista
@foreach ($lista as $item)
<p> {{ $item }}</p>
@endforeach
@forelse ($lista as $item)
<li>{{ $item }}</li>
@empty
<p>lista vacia</p>
@endforelse
como crear una plantilla base?
crearemos uno llamado p.e layout.blade.php
<!DOCTYPE html>
<html>
<head>
<title>mi sitio</title>
</head>
<body>
<header>
<nav>
<a href="{{ route('solo-letras','abcde') }}">solo letras</a>
<a href="{{ route('home','israel') }}">home</a>
</nav>
</header>
@yield('contenido')
<footer>
Copyright {{ date('Y')}}
</footer>
</body>
</html>
y ahora una vista que extienda de esa plantilla y que solo defina el contenido en la seccion definida.
@extends('layout')
@section('contenido')
<h1>aqui va el contenido de la pagina</h1>
@stop
No hay comentarios:
Publicar un comentario