Laravel

Laravel 5.4: versión nueva, funcionalidades nuevas

Laravel 5.4 ya es una realidad y viene acompañada de novedades muy interesantes. Hoy repasamos las más destacables, que harán que nuestro proyecto mejore sustancialmente.

Drauta agencia digitalDrauta

Laravel 5.4: versión nueva, funcionalidades nuevas

Novedades Laravel 5.4

En ocasiones tenemos un input en el que pedimos el mail, pensamos que se utilizará correctamente y acabamos guardando un mail así: 'mail@example.com   '.

En la nueva versión de Laravel ya no es problema, con ayuda de un middleware nuevo lo dejará así: 'mail@example.com'.

Laravel Mix

Además de esta funcionalidad, también nos ayuda cuando tenemos una colección de modelos y les queremos hacer algo a todos. Por ejemplo, tenemos un listado de posts y los queremos activar. Debemos hacer algo así:

`

$posts->each(function($post){

$post->activar();

});

`

Ahora podemos hacer algo así:

`

$posts->each->activar();

`

Esto es así porque Laravel tiene una carpeta de assets en /resources en la que puedes poner tu scss y tus js y haciendo 'gulp' compilarlo todo con Laravel Elixir, que ahora ha pasado a llamarse Laravel Mix. Ha cambiado su funcionamiento, pero sigue siendo magia.

En tus routes/web.php tienes cosas así:

`

Route::put('post/{post}', 'PostController@update')->middleware('auth');

`

Ahora puedes reordenarlo a:

`

Route::middleware('auth')->put('post/{post}', 'PostController@update');

`

No es algo que se vaya a utilizar demasiado, es preferible tenerlo ordenado con route::verbo('path', 'funcion')->extras

Sigamos con los Posts, haces tu modelo, su migración y con el controller ejecutas 'php artisan make:controller PostController --resource', esto te creará todas las funciones que vas a usar para listar, crear, editar, ver y eliminar, pero tienes que editar todos los $id por Post $post. Ahora podrás ejecutar 'php artisan make:controller PostController --model="App\Post"' y te ahorras eso.

¿Tienes en mente un panel de Bootstrap?

`

<div class="panel panel-default">

<div class="panel-heading">

<h3>Titulo</h3>

</div>

<div class="panel-body">

<p>Lorem ipsum...</p>

</div>

<div class="panel-footer">

<button></button>

</div>

`

Si lo usas mucho lo sacas a un partial y le cambias 'Titulo' por {!! $titulo !!}, '<p>Lorem ipsum...</p>' por $body y '<button></button>' por {!! footer !!}. Haces un @include y no es limpio porque le pasas variables que contienen html.

Ahora puedes cambiar ese {!! $body !!} post {{ $slot }} y a los otros dos les cambias los inseguros {!! !!} por unos más seguros {{ }}. Y el include lo cambias por:

`

@component('partial.panel')

@slot('title')

<h3>Titulo</h3>

@endslot

<p>Lorem ipsum...</p>

@slot('footer')

<button></button>

@endslot

@endcomponent

`

Es mejor y tiene muchas utilidades. En realidad es una copia de los components de Vue (y eso no es que no sea malo, es que es muy bueno).

Enviar un mail siempre es molesto, los clientes de correo son muy exquisitos y no aceptan casi nada de css y debes incluir tus estilos inline. Pero tu trabajas en con markdown cada vez que quieres escribir algo, es fácil de usar y va bien. Pues ahora puedes usarlo para escribir tus mails en Laravel.

Facades en tiempo real

Ahora puedes convertir cualquier clase a Facade en tiempo real, si quieres que tu App\Excel se comporte de forma estática haciendo que tu código parezca más limpio, sólo tienes que hacer un use Facade\App\Excel.

Laravel Dusk

Laravel está construido para ser muy testeable, pero cuando tienes mucho js, cosas que ocurren de forma asíncrona, sockets de broadcast... Testear eso es difícil. Bueno, era difícil.

Con Laravel Dusk, básicamente abrimos un navegador Google Chrome y hace lo que le pidas (como esperar a que cambie algo que se le envíe por ajax) le preguntas si algo es cierto y si no lo es te hace una captura de pantalla para que puedas ver que es lo que ha pasado. Magia.

En mi blog imaginario tengo una newsletter a la que aviso cuando subo un post nuevo. Esto lo hago con Laravel Notifications de Laravel 5.3 y va perfecto, pero tengo que atacar a los eventos del post y preferiría tener los míos propios. Pues ahora le puedes decir al Post que cuando quiera lanzar el evento de 'nuevo post creado', en vez de utilizar su evento lance el tuyo, con el nombre que tú quieras y tus normas. Así te aseguras de tener toda la potencia siempre.

¿Quieres empezar un nuevo proyecto con nosotros?

¿Necesitas servicios para tu web? Descubre como te podemos ayudar y no dudes en contactar con nosotros.