Cómo usar eventos y oyentes de Laravel en su aplicación
Laravel viene con varias características interesantes en su núcleo. Algunas de ellas son Difusión, Almacenamiento de archivos, Notificaciones, Eventos, etc. Cada una de estas funciones integradas ayuda a los desarrolladores a simplificar tareas comunes y complicadas.
En este artículo, discutimos los eventos de Laravel que nos permiten registrar un oyente para eventos específicos que ocurren en la aplicación. En otras palabras, puedo decir usuario registrado, pedido realizado, producto agregado, todos estos son los eventos. Y si necesita activar alguna acción después de estos eventos, puede registrar oyentes. Laravel llama automáticamente a los oyentes registrados para eventos específicos.
Para nuestro artículo, implementaré un evento para el registro de usuarios. Una vez que un usuario se registró en la aplicación, el sistema debería enviarle un correo electrónico de bienvenida. Aquí el registro de usuario es el evento y el envío de un correo electrónico de bienvenida es un oyente.
Habiendo dicho eso, veamos cómo usar eventos y oyentes en su aplicación Laravel.
Registro de eventos y oyentes en Laravel
Laravel proporciona un EventServiceProvider
archivo donde necesita registrar sus eventos y oyentes. En nuestro caso, necesitamos agregar un evento y un oyente para el registro del usuario. Entonces, abra el archivo EventServiceProvider.php
y agregue un UserRegistered
evento en él.
app / Providers / EventServiceProvider.php
...
...
class EventServiceProvider extends ServiceProvider
{
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'AppEventsUserRegistered' => [
'AppListenersSendWelcomeEmail',
],
];
El usuario puede agregar tantos eventos a esta matriz según los requisitos. A continuación, genere eventos de Laravel ejecutando el comando:
php artisan event:generate
Este comando crea los directorios ‘Eventos’ y ‘Oyentes’ en la carpeta ‘aplicación’. Dentro del directorio ‘app / Events’ encontrará el archivo UserRegistered.php
. De manera similar, el SendWelcomeEmail.php
archivo está en el directorio ‘app / Listeners’.
Definición de eventos y oyentes
Ahora está listo con el texto estándar para su evento registrado de usuario. Nuestro objetivo es enviar un correo electrónico de bienvenida al usuario después de que se haya registrado. Para enviar un correo electrónico, necesitamos un objeto de usuario que contenga la información del usuario. En el UserRegistered
caso de que le pase un objeto de usuario a su constructor. Este objeto luego pasará al oyente.
app / Events / UserRegistered.php
<?php
namespace AppEvents;
....
use AppUser;
class UserRegistered
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
}
El código que envía un correo electrónico a un usuario irá dentro del archivo de escucha. Abra el oyente SendWelcomeEmail
y escriba el código de la siguiente manera.
app / Listeners / SendWelcomeEmail.php
<?php
namespace AppListeners;
....
use Mail;
class SendWelcomeEmail
{
....
....
/**
* Handle the event.
*
* @param UserRegistered $event
* @return void
*/
public function handle(UserRegistered $event)
{
$data = array('name' => $event->user->name, 'email' => $event->user->email, 'body' => 'Welcome to our website. Hope you will enjoy our articles');
Mail::send('emails.mail', $data, function($message) use ($data) {
$message->to($data['email'])
->subject('Welcome to our Website');
$message->from('[email protected]');
});
}
}
En el archivo anterior, escribí el código para enviar correo electrónico en el handle
método de la clase de escucha. Esto se debe a que el handle
método recibe una llamada después de la ocurrencia de un evento de registro de usuario.
También utilicé el primer parámetro como ’emails.mail’ en el método Mail. Significa que debes crear un resources/views/emails/mail.blade.php
archivo.
mail.blade.php
Hi <strong>{{ $name }}</strong>,
<p>{{ $body }}</p>
Finalmente llame al evento
En esta etapa, todo está listo con su evento y su oyente. El último paso que queda es llamar al evento desde el lugar apropiado. Supongamos que está utilizando ‘UserController’ para registrar un usuario. Entonces, desde el UserController
, puede llamar al evento de la siguiente manera.
aplicación / Http / Controllers / UserController.php
<?php
namespace AppHttpControllers;
....
use AppEventsUserRegistered;
use AppUser;
class UserController extends Controller
{
.....
.....
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
$user = User::create([
'name' => $request->input('name'),
'email' => $request->input('email'),
'password' => bcrypt($request->input('password')),
]);
// call our event here
event(new UserRegistered($user));
return $user;
}
}
Ahora, cuando un usuario se registra, el código anterior da una llamada al evento ‘UserRegistered’ que eventualmente llama al oyente. A continuación, el oyente envía un correo electrónico de bienvenida al usuario.
Espero que entiendas cómo usar eventos y oyentes en tu aplicación Laravel. Comparta sus pensamientos y sugerencias en la sección de comentarios a continuación.
Artículos relacionados
- Cómo usar Laravel Passport para la autenticación de API REST
- Envío de correo electrónico a través del servidor SMTP de Gmail en Laravel
- Sistema de registro e inicio de sesión de usuario en Laravel