Laravel 5.7

Ya tenemos disponible la nueva versión del framework que viene cargado de nuevas características y mejoras, así como la corrección de errores. Esta versión recibirá correcciones de errores por 6 meses (hasta febrero de 2019) y correcciones de seguridad por 1 año (hasta Agosto de 2019). Veamos algunas de las nuevas características:

Verificación de correo electrónico

En Laravel 5.7 se añade una característica opcional al scaffolding de autenticación incluido por defecto en el framework: la verificación del correo del usuario. Para ello fue agregado un nuevo campo en la tabla users de la base de datos email_verified_at y para que la aplicación envíe un correo de verificación es necesario que el modelo User implemente la interfaz MustVerifyEmail de esta manera:

#
<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    // ...
}

No olvides configurar un servicio para envío de emails en tu aplicación.

Además debes agregar la opción verify en el método Auth::routes() en el archivo de rutas de esta forma: Auth::routes(['verify' => true]); para que se registren las rutas necesarias.

Así, cada vez que un nuevo usuario se registre, recibirá un correo con un enlace para verificar el correo.

Verfiicacion Email Laravel

Cuando el usuario haga clic en él, Laravel actualizará la base de datos de manera automática y redireccionará al usuario a la sección de la aplicación definida en el nuevo controlador App\Http\Controllers\Auth\VerificationController.

Adicionalmente, esta característica incluye un nuevo middleware para limitar fácilmente el acceso a los usuarios no verificados a secciones de la aplicación:

'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

Es decir, los usuarios no verificados no podrán acceder a la ruta o grupo de rutas que tengan agregado este middleware.

Mejora tus habilidades con Blade, Eloquent ORM y aprende a desarrollar módulos avanzados con Laravel

Ver más

Políticas de acceso (Gate/Policy) para usuarios visitantes

En versiones anteriores, Laravel denegaba el acceso cuando usuarios no autenticados intentaban acceder a secciones protegidas por las políticas de acceso (gate/policy) de la aplicación. Sin embargo, ahora en Laravel 5.7 podrás permitir a los visitantes pasar las comprobaciones de autenticación definiendo una determinación de tipo (type-hint) opcional o suministrando un valor por defecto null para la definición de argumento del usuario:

<?php
//...
Gate::define('update-post', function (?User $user, Post $post) {
    // verificación de acceso incluyendo usuarios no conectados
});

Symfony Dump Server

Una nueva característica agregada a Laravel 5.7 es el dump-server de Symfony vía paquete de Composer https://github.com/beyondcode/laravel-dump-server. Con ello, tendremos un comando muy útil para hacer debug en la aplicación. Es decir al ejecutar:

php artisan dump-server

Se activará un servidor en la consola dedicado a capturar todos los llamados al método dump en cualquier parte de la aplicación y mostrar la información que enviemos directamente en la consola en vez del navegador.

Luego de ejecutar el comando, podemos agregar el método dump en un método de un controlador:

método dump en el controlador

Y al visitar la URL en el navegador se visualizará la vista sin ninguna interrupción y en la consola donde se está ejecutando el servidor, se mostrará la información del usuario:

dump server activo

Notificaciones en distintos idiomas

Ahora Laravel permite enviar notificaciones a los usuarios en un idioma diferente al que está predeterminado en una aplicación multi-idioma. Esto por medio del nuevo método locale de la clase Illuminate\Notifications\Notification, por tanto lo podemos usar con el método notify:

$user->notify((new InvoicePaid($invoice))->locale('es'));

O cuando usas el Facade:

Notification::locale('es')->send($users, new InvoicePaid($invoice));

Cantidad de enlaces en la paginación

Laravel 5.7 nos da la opción de poder configurar la cantidad de enlaces adicionales que serán mostrados de cada lado del paginador. Por defecto, serán tres enlaces, pero se puede configurar dicho número con el método onEachSide de esta manera:

{{ $paginator->onEachSide(5)->links() }}

Generador de URL con nueva sintaxis

Ahora, adicional a usar cadenas de texto, podrás generar URL para acciones de controladores usando una sintaxis de arreglo:

action([UserController::class, 'index']);

Nuevos métodos de prueba para consola

En Laravel 5.7 podrás escribir pruebas para tus comandos muy fácilmente con los nuevos métodos: expectsQuestion para la entrada de datos, expectsOutput para evaluar el texto que esperas de salida y assertExitCode para probar el código de salida. Por ejemplo:

#
public function test_console_command()
{
    $this->artisan('question')
         ->expectsQuestion('What is your name?', 'Taylor Otwell')
         ->expectsQuestion('Which language do you program in?', 'PHP')
         ->expectsOutput('Your name is Taylor Otwell and you program in PHP.')
         ->assertExitCode(0);
}

Nuevas páginas de error

Laravel 5.7 tiene nuevo diseño para las páginas de errores 403, 404, 500 y 503 con opción a traducir el texto por medio del archivo .json de idioma.

error 404

error 403

error 500

error 503

Cambios en el directorio resources

Se ha eliminado la carpeta assets y sus archivos han sido movidos a la carpeta resources/ quedando de esta manera:

resources
├── js
├── lang
├── sass
└── views

y así muchas otras características y mejoras que ya podemos usar desde ya creando una nueva aplicación de Laravel con:

composer create-project --prefer-dist laravel/laravel myapp57

Material Relacionado

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.