Benachrichtigungen sind in fast jeder Anwendung erforderlich, insbesondere in den Kategorien E-Commerce, soziale Medien oder bekannte digitale Produkte. In diesem Tutorial erfahren Sie, wie Sie eine Benachrichtigung in Laravel senden. Um eine Benachrichtigung in Laravel zu senden, führen wir die folgenden Schritte aus.
Wenn Sie lokal keine Laravel 8-Installation haben, führen Sie einfach den folgenden Befehl aus:
composer create-project --prefer-dist laravel/laravel laravel-email-notification
Wenn Ihr Laravel-Projekt frisch ist, müssen Sie Ihre Datenbankanmeldeinformationen aktualisieren. Öffnen Sie einfach die .env-Datei in Ihrem Laravel 9-Projekt.
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
Hier müssen wir zuerst die Benachrichtigungstabelle generieren , bevor wir die Migrationen ausführen. Bitte führen Sie den folgenden Befehl aus:
php artisan notifications:table
php artisan migrate
Sobald wir fertig sind, erstellen wir einen Seeder für unseren Benutzer. Führen Sie den folgenden Befehl aus:
php artisan make:seeder CreateUsersSeeder
Sobald unser Seeder generiert ist, fügen Sie ihn bitte in das Verzeichnis „database/seeders“ ein . Öffnen Sie das CreateUsersSeeder.phpund Sie sehen den folgenden Code:
<?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')
]);
}
}
Führen Sie dann den folgenden Befehl aus:
php artisan db:seed --class=CreateUsersSeeder
Erfahren Sie hier mehr über die Sämaschine Laravel.
Lassen Sie uns nun unser Laravel-E-Mail-Benachrichtigungsbeispiel generieren, das wir als benennen werden EmailNotification. Führen Sie dazu den folgenden Befehl aus.
php artisan make:notification EmailNotification
Wenn Sie fertig sind, navigieren Sie durch App/Notificationdie s, öffnen Sie sie EmailNotification.phpund bearbeiten Sie sie. Sehen Sie sich das folgende Beispiel an:
<?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 [
//
];
}
}
In meinem Beispiel werde ich meine groben Routen manuell erstellen. Öffnen Sie einfach die Datei „routes/web.php“ und fügen Sie die folgenden Routen hinzu.
<?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');
In diesem Abschnitt fügen wir unsere E-Mail-Benachrichtigung in HomeControllerunsere Routen ein. Nachfolgend finden Sie den vollständigen Code unseres Controllers:
<?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!');
}
}
Jetzt ist unser Code bereit, Benachrichtigungen an unsere Benutzer zu senden. Sie können es jetzt testen, indem Sie den Befehl „serve“ ausführen:
php artisan serve
Führen Sie dann die unten stehende URL in Ihrem Browser aus, um eine E-Mail-Benachrichtigung an Ihren Benutzer zu senden.
http://127.0.0.1:8000/send
#laravel #php