{"id":28161,"date":"2021-05-21T16:30:00","date_gmt":"2021-05-21T13:30:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28161"},"modified":"2021-10-17T16:52:58","modified_gmt":"2021-10-17T13:52:58","slug":"como-usar-eventos-y-oyentes-de-laravel-en-su-aplicacion","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-usar-eventos-y-oyentes-de-laravel-en-su-aplicacion\/","title":{"rendered":"C\u00f3mo usar eventos y oyentes de Laravel en su aplicaci\u00f3n"},"content":{"rendered":"<p>Laravel viene con varias caracter\u00edsticas interesantes en su n\u00facleo. Algunas de ellas son Difusi\u00f3n, Almacenamiento de archivos, Notificaciones, Eventos, etc. Cada una de estas funciones integradas ayuda a los desarrolladores a simplificar tareas comunes y complicadas.<\/p>\n<p>En este art\u00edculo, discutimos los eventos de Laravel que nos permiten registrar un oyente para eventos espec\u00edficos que ocurren en la aplicaci\u00f3n. En otras palabras, puedo decir usuario registrado, pedido realizado, producto agregado, todos estos son los eventos. Y si necesita activar alguna acci\u00f3n despu\u00e9s de estos eventos, puede registrar oyentes. Laravel llama autom\u00e1ticamente a los oyentes registrados para eventos espec\u00edficos.<\/p>\n<p>Para nuestro art\u00edculo, implementar\u00e9 un evento para el registro de usuarios. Una vez que un usuario se registr\u00f3 en la aplicaci\u00f3n, el sistema deber\u00eda enviarle un correo electr\u00f3nico de bienvenida. Aqu\u00ed el registro de usuario es el evento y el env\u00edo de un correo electr\u00f3nico de bienvenida es un oyente.<\/p>\n<p>Habiendo dicho eso, veamos c\u00f3mo usar eventos y oyentes en su aplicaci\u00f3n Laravel.<\/p>\n<h3>Registro de eventos y oyentes en Laravel<\/h3>\n<p>Laravel proporciona un <code>EventServiceProvider<\/code>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 <code>EventServiceProvider.php<\/code>y agregue un <code>UserRegistered<\/code>evento en \u00e9l.<\/p>\n<p><strong>app \/ Providers \/ EventServiceProvider.php<\/strong><\/p>\n<pre><code>...\n...\nclass EventServiceProvider extends ServiceProvider\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* The event listener mappings for the application.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var array\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected $listen = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'AppEventsUserRegistered' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'AppListenersSendWelcomeEmail',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0];<\/code><\/pre>\n<p>El usuario puede agregar tantos eventos a esta matriz seg\u00fan los requisitos. A continuaci\u00f3n, genere eventos de Laravel ejecutando el comando:<\/p>\n<pre><code>php artisan event:generate<\/code><\/pre>\n<p>Este comando crea los directorios &#8216;Eventos&#8217; y &#8216;Oyentes&#8217; en la carpeta &#8216;aplicaci\u00f3n&#8217;. Dentro del directorio &#8216;app \/ Events&#8217; encontrar\u00e1 el archivo <code>UserRegistered.php<\/code>. De manera similar, el <code>SendWelcomeEmail.php<\/code>archivo est\u00e1 en el directorio &#8216;app \/ Listeners&#8217;.<\/p>\n<h3>Definici\u00f3n de eventos y oyentes<\/h3>\n<p>Ahora est\u00e1 listo con el texto est\u00e1ndar para su evento registrado de usuario. Nuestro objetivo es enviar un correo electr\u00f3nico de bienvenida al usuario despu\u00e9s de que se haya registrado. Para enviar un correo electr\u00f3nico, necesitamos un objeto de usuario que contenga la informaci\u00f3n del usuario. En el <code>UserRegistered<\/code>caso de que le pase un objeto de usuario a su constructor. Este objeto luego pasar\u00e1 al oyente.<\/p>\n<p><strong>app \/ Events \/ UserRegistered.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppEvents;\n\u00a0\n....\nuse AppUser;\n\u00a0\nclass UserRegistered\n{\n\u00a0\u00a0\u00a0\u00a0use Dispatchable, InteractsWithSockets, SerializesModels;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0public $user;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Create a new event instance.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function __construct(User $user)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;user = $user;\u00a0\u00a0 \n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>El c\u00f3digo que env\u00eda un correo electr\u00f3nico a un usuario ir\u00e1 dentro del archivo de escucha. Abra el oyente <code>SendWelcomeEmail<\/code>y escriba el c\u00f3digo de la siguiente manera.<\/p>\n<p><strong>app \/ Listeners \/ SendWelcomeEmail.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppListeners;\n\u00a0\n....\nuse Mail;\n\u00a0\nclass SendWelcomeEmail\n{\n\u00a0\u00a0\u00a0\u00a0....\n\u00a0\u00a0\u00a0\u00a0....\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Handle the event.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 UserRegistered\u00a0 $event\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return void\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function handle(UserRegistered $event)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = array('name' =&gt; $event-&gt;user-&gt;name, 'email' =&gt; $event-&gt;user-&gt;email, 'body' =&gt; 'Welcome to our website. Hope you will enjoy our articles');\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Mail::send('emails.mail', $data, function($message) use ($data) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$message-&gt;to($data['email'])\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0-&gt;subject('Welcome to our Website');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$message-&gt;from('noreply@artisansweb.net');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0});\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>En el archivo anterior, escrib\u00ed el c\u00f3digo para enviar correo electr\u00f3nico en el <code>handle<\/code>m\u00e9todo de la clase de escucha. Esto se debe a que el <code>handle<\/code>m\u00e9todo recibe una llamada despu\u00e9s de la ocurrencia de un evento de registro de usuario.<\/p>\n<p>Tambi\u00e9n utilic\u00e9 el primer par\u00e1metro como &#8216;emails.mail&#8217; en el m\u00e9todo Mail. Significa que debes crear un <code>resources\/views\/emails\/mail.blade.php<\/code>archivo.<\/p>\n<p><strong>mail.blade.php<\/strong><\/p>\n<pre><code>Hi &lt;strong&gt;{{ $name }}&lt;\/strong&gt;,\n\u00a0\n&lt;p&gt;{{ $body }}&lt;\/p&gt;<\/code><\/pre>\n<h3>Finalmente llame al evento<\/h3>\n<p>En esta etapa, todo est\u00e1 listo con su evento y su oyente. El \u00faltimo paso que queda es llamar al evento desde el lugar apropiado. Supongamos que est\u00e1 utilizando &#8216;UserController&#8217; para registrar un usuario. Entonces, desde el <code>UserController<\/code>, puede llamar al evento de la siguiente manera.<\/p>\n<p><strong>aplicaci\u00f3n \/ Http \/ Controllers \/ UserController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\n....\nuse AppEventsUserRegistered;\nuse AppUser;\n\u00a0\nclass UserController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0.....\n\u00a0\u00a0\u00a0\u00a0.....\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Store a newly created resource in storage.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 IlluminateHttpRequest\u00a0 $request\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return IlluminateHttpResponse\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function store(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = User::create([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'name' =&gt; $request-&gt;input('name'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email' =&gt; $request-&gt;input('email'),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; bcrypt($request-&gt;input('password')),\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ call our event here\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0event(new UserRegistered($user));\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $user;\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Ahora, cuando un usuario se registra, el c\u00f3digo anterior da una llamada al evento &#8216;UserRegistered&#8217; que eventualmente llama al oyente. A continuaci\u00f3n, el oyente env\u00eda un correo electr\u00f3nico de bienvenida al usuario.<\/p>\n<p>Espero que entiendas c\u00f3mo usar eventos y oyentes en tu aplicaci\u00f3n Laravel. Comparta sus pensamientos y sugerencias en la secci\u00f3n de comentarios a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-usar-laravel-passport-para-la-autenticacion-de-api-rest\/\" title=\"C\u00f3mo usar Laravel Passport para la autenticaci\u00f3n de API REST\" >C\u00f3mo usar Laravel Passport para la autenticaci\u00f3n de API REST<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/envio-de-correo-electronico-a-traves-del-servidor-smtp-de-gmail-en-laravel\/\" title=\"Env\u00edo de correo electr\u00f3nico a trav\u00e9s del servidor SMTP de Gmail en Laravel\" >Env\u00edo de correo electr\u00f3nico a trav\u00e9s del servidor SMTP de Gmail en Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/sistema-de-registro-e-inicio-de-sesion-de-usuario-en-laravel\/\" title=\"Sistema de registro e inicio de sesi\u00f3n de usuario en Laravel\" >Sistema de registro e inicio de sesi\u00f3n de usuario en Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfEst\u00e1 buscando implementar eventos y oyentes de Laravel? En este art\u00edculo discutimos c\u00f3mo registrar, definir y usar los eventos y oyentes de Laravel.<\/p>\n","protected":false},"author":1,"featured_media":22025,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[495],"tags":[849],"class_list":["post-28161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=28161"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28161\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/22025"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28161"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}