Como enviar uma notificação no Laravel com exemplo

As notificações são necessárias em quase todos os aplicativos, especialmente os que se enquadram na categoria de comércio eletrônico, mídia social ou qualquer produto digital conhecido. Neste tutorial, aprenderemos como enviar uma notificação no Laravel , Para enviar uma notificação no Laravel fazemos os seguintes passos.

Passo 1: Instalação do Laravel

Se você não possui uma instalação do Laravel 8 em seu local, basta executar o seguinte comando abaixo:

composer create-project --prefer-dist laravel/laravel laravel-email-notification

Etapa 2: configuração do banco de dados

Se o seu projeto Laravel for novo, você precisará atualizar suas credenciais de banco de dados. Basta abrir o arquivo .env em seu projeto Laravel 9.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name_here
DB_USERNAME=your_database_username_here
DB_PASSWORD=your_database_password_here

Etapa 3: configuração da migração

Aqui precisamos gerar primeiro a tabela de notificações antes de executar as migrações. Por favor, execute o seguinte comando:

php artisan notifications:table
php artisan migrate

Feito isso, vamos criar um seeder para nosso usuário. Execute o seguinte comando:

php artisan make:seeder CreateUsersSeeder

Uma vez que nosso seeder é gerado gentilmente para o diretório database/seeders . Abra o CreateUsersSeeder.phpe você verá o seguinte código:

<?php

namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;

class CreateUsersSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        User::create([
            'name' => 'Juan',
            'email' => 'email@gmail.com',
            'password' => bcrypt('password')
        ]);
    }
}

Em seguida, execute o seguinte comando:

php artisan db:seed --class=CreateUsersSeeder

Saiba mais sobre o seeder do Laravel aqui.

Etapa 4: Fazendo a notificação por e-mail do Laravel

Agora, vamos gerar nosso exemplo de notificação de e-mail do Laravel, vamos nomeá-lo como EmailNotification. Execute o seguinte comando para fazer isso.

php artisan make:notification EmailNotification

Uma vez feito, navegue App/Notificatione abra-o EmailNotification.phpe edite-o. Veja o exemplo abaixo:

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;

class EmailNotification extends Notification
{
    use Queueable;

    /**
     * @var array $project
     */
    protected $project;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct($project)
    {
        $this->project = $project;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['mail','database'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->greeting($this->project['greeting'])
                    ->line($this->project['body'])
                    ->action($this->project['actionText'], $this->project['actionURL'])
                    ->line($this->project['thanks']);
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toDatabase($notifiable)
    {
        return [
            'project_id' => $this-How to Send a Notification in Laravel with Example>project['id']
        ];
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

Passo 5: Configurando Rotas

No meu exemplo, vou criar manualmente minhas rotas crud. Basta abrir o arquivo "routes/web.php" e adicionar as seguintes rotas.

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/send', '\App\Http\Controllers\HomeController@send')->name('home.send');

Passo 6: Configurando o Controlador

Nesta seção, adicionaremos nossa notificação por e-mail HomeControllerconforme definimos em nossas rotas. Veja abaixo o código completo do nosso controller:

<?php

namespace App\Http\Controllers;

use Notification;
use App\Models\User;
use Illuminate\Http\Request;
use App\Notifications\EmailNotification;

class HomeController extends Controller
{
    public function send() 
    {
    	$user = User::first();
  
        $project = [
            'greeting' => 'Hi '.$user->name.',',
            'body' => 'This is the project assigned to you.',
            'thanks' => 'Thank you this is from codeanddeploy.com',
            'actionText' => 'View Project',
            'actionURL' => url('/'),
            'id' => 57
        ];
  
        Notification::send($user, new EmailNotification($project));
   
        dd('Notification sent!');
    }
}

Agora nosso código está pronto para enviar notificações aos nossos usuários. Você pode testá-lo agora executando o comando serve:

php artisan serve

Em seguida, execute o URL abaixo no seu navegador para enviar uma notificação por e-mail ao seu usuário.

http://127.0.0.1:8000/send

#laravel #php 

2.45 GEEK