{"id":27674,"date":"2021-05-21T16:29:00","date_gmt":"2021-05-21T13:29:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=27674"},"modified":"2021-10-18T04:10:33","modified_gmt":"2021-10-18T01:10:33","slug":"como-usar-eventos-e-ouvintes-do-laravel-em-seu-aplicativo","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/pt-pt\/como-usar-eventos-e-ouvintes-do-laravel-em-seu-aplicativo\/","title":{"rendered":"Como usar eventos e ouvintes do Laravel em seu aplicativo"},"content":{"rendered":"<p>O Laravel vem com v\u00e1rios recursos interessantes em seu n\u00facleo. Alguns deles s\u00e3o transmiss\u00e3o, armazenamento de arquivo, notifica\u00e7\u00f5es, eventos, etc. Cada um desses recursos integrados ajuda os desenvolvedores a simplificar tarefas comuns e complicadas.<\/p>\n<p>Neste artigo, discutimos os Eventos do Laravel que nos permitem registrar um ouvinte para eventos espec\u00edficos que ocorrem na aplica\u00e7\u00e3o. Em outras palavras, posso dizer usu\u00e1rio registrado, pedido feito, produto adicionado, todos esses s\u00e3o os eventos. E se voc\u00ea precisar acionar alguma a\u00e7\u00e3o ap\u00f3s esses eventos, voc\u00ea pode registrar ouvintes. O Laravel chama automaticamente os ouvintes registrados para eventos espec\u00edficos.<\/p>\n<p>Para o nosso artigo, implementarei um evento para cadastro de usu\u00e1rios. Assim que um usu\u00e1rio se cadastrar no aplicativo, o sistema deve enviar a ele um e-mail de boas-vindas. Aqui, o registro do usu\u00e1rio \u00e9 o evento e o envio de um e-mail de boas-vindas \u00e9 um ouvinte.<\/p>\n<p>Dito isso, vamos ver como usar eventos e ouvintes em seu aplicativo Laravel.<\/p>\n<h3>Registrando Eventos e Ouvintes no Laravel<\/h3>\n<p>O Laravel disponibiliza o <code>EventServiceProvider<\/code>arquivo onde voc\u00ea precisa cadastrar seus eventos e ouvintes. No nosso caso, precisamos adicionar um evento e ouvinte para o registro do usu\u00e1rio. Ent\u00e3o, abra o arquivo <code>EventServiceProvider.php<\/code>e adicione um <code>UserRegistered<\/code>evento nele.<\/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>O usu\u00e1rio pode adicionar tantos eventos a esta matriz, dependendo dos requisitos. Em seguida, gere eventos do Laravel executando o comando:<\/p>\n<pre><code>php artisan event:generate<\/code><\/pre>\n<p>Este comando cria os diret\u00f3rios &#8216;Eventos&#8217; e &#8216;Ouvintes&#8217; na pasta &#8216;app&#8217;. Dentro do diret\u00f3rio &#8216;app \/ Events&#8217; voc\u00ea encontrar\u00e1 o arquivo <code>UserRegistered.php<\/code>. Da mesma forma, o <code>SendWelcomeEmail.php<\/code>arquivo est\u00e1 no diret\u00f3rio &#8216;app \/ Listeners&#8217;.<\/p>\n<h3>Definindo Eventos e Ouvintes<\/h3>\n<p>Agora voc\u00ea est\u00e1 pronto com o padr\u00e3o para o evento registrado pelo usu\u00e1rio. Nosso objetivo \u00e9 enviar um e-mail de boas-vindas ao usu\u00e1rio ap\u00f3s o registro. Para enviar um e-mail, precisamos de um objeto de usu\u00e1rio que cont\u00e9m as informa\u00e7\u00f5es do usu\u00e1rio. No <code>UserRegistered<\/code>caso de eu passar um objeto de usu\u00e1rio para seu construtor. Este objeto ent\u00e3o passar\u00e1 para o ouvinte.<\/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>O c\u00f3digo que envia um e-mail para um usu\u00e1rio ir\u00e1 para dentro do arquivo listener. Abra o listener <code>SendWelcomeEmail<\/code>e escreva o c\u00f3digo da seguinte maneira.<\/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>No arquivo acima, escrevi o c\u00f3digo para envio de e-mail no <code>handle<\/code>m\u00e9todo da classe listener. Isso ocorre porque o <code>handle<\/code>m\u00e9todo obt\u00e9m uma chamada ap\u00f3s a ocorr\u00eancia de um evento de registro do usu\u00e1rio.<\/p>\n<p>Tamb\u00e9m usei o primeiro par\u00e2metro como &#8216;emails.mail&#8217; no m\u00e9todo Mail. Isso significa que voc\u00ea deve criar o <code>resources\/views\/emails\/mail.blade.php<\/code>arquivo.<\/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, chame o evento<\/h3>\n<p>Nesta fase, est\u00e1 tudo pronto com o seu evento e ouvinte. A \u00faltima etapa que resta \u00e9 chamar o evento do local apropriado. Digamos que voc\u00ea esteja usando &#8216;UserController&#8217; para registrar um usu\u00e1rio. Portanto, em <code>UserController<\/code>, voc\u00ea pode fazer uma chamada para o evento da seguinte maneira.<\/p>\n<p><strong>app \/ 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>Agora, quando um usu\u00e1rio se registra, o c\u00f3digo acima d\u00e1 uma chamada para o evento &#8216;UserRegistered&#8217; que eventualmente chama o ouvinte. O ouvinte ent\u00e3o envia um e-mail de boas-vindas ao usu\u00e1rio.<\/p>\n<p>Espero que voc\u00ea entenda como usar eventos e ouvintes em seu aplicativo Laravel. Por favor, compartilhe seus pensamentos e sugest\u00f5es na se\u00e7\u00e3o de coment\u00e1rios abaixo.<\/p>\n<h4>Artigos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/como-usar-o-laravel-passport-para-autenticacao-rest-api\/\" title=\"Como usar o Laravel Passport para autentica\u00e7\u00e3o REST API\" >Como usar o Laravel Passport para autentica\u00e7\u00e3o REST API<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/enviando-e-mail-via-servidor-smtp-do-gmail-no-laravel\/\" title=\"Enviando e-mail via servidor SMTP do Gmail no Laravel\" >Enviando e-mail via servidor SMTP do Gmail no Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/pt-pt\/sistema-de-registro-de-usuario-e-login-no-laravel\/\" title=\"Sistema de Registro de Usu\u00e1rio e Login no Laravel\" >Sistema de Registro de Usu\u00e1rio e Login no Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00ea est\u00e1 procurando implementar eventos e ouvintes do Laravel? Neste artigo, discutimos como registrar, definir e usar os eventos e ouvintes do 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":[502],"tags":[848],"class_list":["post-27674","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-pt-pt"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27674","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/comments?post=27674"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/posts\/27674\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media\/22025"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/media?parent=27674"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/categories?post=27674"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/pt-pt\/wp-json\/wp\/v2\/tags?post=27674"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}