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.
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.
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:
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:
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.
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
- Videotutorial: actualiza tu aplicación de Laravel 5.6 a Laravel 5.7
- Cómo actualizar tu proyecto de Laravel 5.6 a Laravel 5.7
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.