Notificações em Laravel

Neste artigo, vamos explorar o sistema de notificação no framework web Laravel. O sistema de notificação do Laravel permite enviar notificações aos usuários por diferentes canais. Hoje, discutiremos como você pode enviar notificações pelo canal de e-mail.

Noções básicas de notificações

Durante o desenvolvimento do aplicativo, muitas vezes você precisa notificar os usuários sobre diferentes alterações de estado. Pode ser enviar notificações por e-mail quando o status do pedido for alterado ou enviar um SMS sobre sua atividade de login para fins de segurança. Em particular, estamos falando de mensagens que são curtas e apenas fornecem informações sobre as mudanças de estado.

O Laravel já fornece um recurso interno que nos ajuda a obter algo semelhante – notificações. Na verdade, torna o envio de mensagens de notificação para os usuários uma experiência muito fácil e divertida!

A beleza dessa abordagem é que ela permite que você escolha entre os diferentes canais em que as notificações serão enviadas. Vamos percorrer rapidamente os diferentes canais de notificação suportados pelo Laravel.

  • Correspondência: As notificações serão enviadas em forma de e-mail aos usuários.
  • SMS: Como o nome sugere, os usuários receberão notificações por SMS em seus telefones.
  • Folga: Nesse caso, as notificações serão enviadas nos canais do Slack.
  • Base de dados: Essa opção permite que você armazene notificações em um banco de dados, caso deseje criar uma interface do usuário personalizada para exibi-la.

Entre os diferentes canais de notificação, usaremos o mail channel em nosso exemplo de caso de uso que desenvolveremos ao longo deste tutorial.

Na verdade, será um caso de uso bastante simples que permitirá que os usuários do nosso aplicativo enviem mensagens para cada usuário. Quando os usuários recebem uma nova mensagem em sua caixa de entrada, nós os notificaremos sobre esse evento enviando um e-mail para eles. Claro, faremos isso usando o recurso de notificação do Laravel!

Criar uma classe de notificação personalizada

Como discutimos anteriormente, vamos configurar um aplicativo que permite que os usuários do nosso aplicativo enviem mensagens uns aos outros. Por outro lado, notificaremos os usuários quando receberem uma nova mensagem de outros usuários por e-mail.

Nesta seção, criaremos os arquivos necessários para implementar o caso de uso que estamos procurando.

Crie o Message Modelo

Para começar, vamos criar o Message modelo, que contém mensagens enviadas pelos usuários entre si.

Também precisamos adicionar alguns campos como to, from e message ao messages tabela. Então vamos alterar o arquivo de migração antes de executar o migrate comando em database/migrations/XXXX_XX_XX_XXXXXX_create_messages_table.php.

Agora, vamos executar o comando migrate que cria o messages tabela no banco de dados.

Isso deve criar o messages tabela no banco de dados.

Além disso, certifique-se de ter ativado o sistema de autenticação Laravel padrão primeiro para que recursos como registro e login funcionem imediatamente. Se você não tem certeza de como fazer isso, a documentação do Laravel lhe dirá como.

Crie o NewMessage Classe de notificação

Como cada notificação no Laravel é representada por uma classe separada, precisamos criar uma classe de notificação personalizada, que será usada para notificar os usuários. Vamos usar o seguinte comando artesão para criar uma classe de notificação personalizada—NewMessage.

Isso deve criar o app/Notifications/NewMessage.php class, então vamos substituir o conteúdo desse arquivo pelo conteúdo a seguir.

Como vamos usar o mail canal para enviar notificações aos usuários, o via método é configurado de acordo. Portanto, este é o método que permite configurar o tipo de canal de uma notificação.

A seguir, há o toMail método que permite configurar vários parâmetros de e-mail. Na verdade, o toMail método deve retornar a instância de IlluminateNotificationsMessagesMailMessagee fornece métodos úteis que permitem configurar parâmetros de e-mail.

Entre vários métodos, o line O método permite adicionar uma única linha em uma mensagem. Por outro lado, há o action método que permite adicionar um botão de call-to-action em uma mensagem.

Dessa forma, você pode formatar uma mensagem que será enviada aos usuários. Então é assim que você deve configurar a classe de notificação enquanto estiver usando o mail canal para enviar notificações.

No final, você precisa ter certeza de implementar os métodos necessários de acordo com o tipo de canal configurado no via método. Por exemplo, se você estiver usando o database canal que armazena notificações em um banco de dados, você não precisa configurar o toMail método; em vez disso, você deve implementar o toArray método, que formata os dados que precisam ser armazenados em um banco de dados.

Como enviar notificações

Na seção anterior, criamos uma classe de notificação que está pronta para enviar notificações. Nesta seção, criaremos arquivos que demonstram como você pode enviar notificações usando o NewMessage classe de notificação.

Vamos criar um arquivo controlador em app/Http/Controllers/NotificationController.php com o seguinte conteúdo.

Claro, você precisa adicionar uma rota associada no rotas/web.php Arquivo.

Existem duas maneiras de o Laravel permitir que você envie notificações: usando a entidade notificável ou o Notification fachada.

Se a classe de modelo de entidade utiliza o IlluminateNotificationsNotifiable característica, então você poderia chamar o notify método nesse modelo. o AppUser classe implementa o Notifiable característica e, assim, torna-se a entidade notificável. Por outro lado, você também pode usar o IlluminateSupportFacadesNotification Fachada para enviar notificações aos usuários.

Vamos passar pelo index método do controlador.

No nosso caso, vamos notificar os usuários quando eles receberem uma nova mensagem. Então, tentamos imitar esse comportamento no index método em primeiro lugar.

Em seguida, notificamos o usuário destinatário sobre uma nova mensagem usando o notify método no $toUser objeto, pois é o notificável entidade.

Você deve ter notado que também passamos o $fromUser objeto no primeiro argumento do __construct método, uma vez que queremos incluir o a partir de nome de usuário em uma mensagem.

Por outro lado, se você quiser imitá-lo usando o Notification fachada, é muito fácil fazer isso usando o trecho a seguir.

Como você pode ver, usamos o send método da fachada Notification para enviar uma notificação a um usuário.

Vá em frente e abra o URL https://your-laravel-site-domain/notify/index no seu navegador. Se você ainda não estiver logado, será redirecionado para a tela de login. Assim que estiver logado, você deverá receber um e-mail de notificação no endereço de e-mail anexado com o usuário 1.

Você pode estar se perguntando como o sistema de notificação detecta o to endereço quando ainda não o configuramos em nenhum lugar. Nesse caso, o sistema de notificação tenta encontrar o email propriedade no objeto notificável. E a AppUser object class já tem essa propriedade já que estamos usando o sistema de autenticação padrão do Laravel.

No entanto, se você deseja substituir esse comportamento e deseja usar uma propriedade diferente de email, basta definir o seguinte método em sua classe de notificação.

Agora, o sistema de notificação deve procurar o email_address propriedade em vez de email propriedade para buscar o to Morada.

E é assim que se usa o sistema de notificação no Laravel. Isso nos leva ao final deste artigo também!

Conclusão

O que passamos hoje é um dos recursos úteis, porém menos discutidos, do Laravel—notificações. Ele permite que você envie notificações aos usuários em diferentes canais.

Após uma rápida introdução, implementamos um exemplo do mundo real que demonstrou como enviar notificações pelo canal de e-mail. Na verdade, é muito útil no caso de enviar mensagens curtas sobre mudanças de estado em seu aplicativo.

Para aqueles que estão apenas começando com o Laravel ou procurando expandir seu conhecimento, site ou aplicativo com extensões, temos uma variedade de coisas que você pode estudar no Envato Market.

Deixe um comentário

O seu endereço de e-mail não será publicado.