laravel通知システムの作成


ララベルの人気の重要な理由は、認証、連絡先フォーム、セッション、キュー、ルーティング、およびキャッシュなどの一般的な開発問題に実行可能なソリューションを提供する簡単な事実です.
Laravelプロジェクトにおける共通のプロジェクト要件は通知生成です.本稿では、ラーラベル通知システムを作成することで解決策を提示します.このシステムでは、ユーザーがページを訪問するたびに、通知は、電子メールを介して送信されます.契約を甘やかすために、私はスラックを統合してスラックチャンネルの通知を設定します.
ララベルの通知システムは、各通知のための単一のクラスを設定することによって通知を生成するため、実装する簡単です.このクラスは、特定のチャンネルを使用してメッセージについてユーザーに通知する方法を定義します.

アプリケーションのインストール


LALAVELアプリケーションを迅速に設定するには、CloudwaysでLaravel Hostingを使用しています.ちょうどCloudWayでサインアップし、無料でわずか数回のクリックでLaravelアプリケーションをインストールします.

ユーザーテーブルの作成


インストール後、ユーザーテーブルを作成します.SSHのターミナルを起動し、サーバーには、マスター資格情報(サーバー管理タブで利用可能)を使用してログインします.

次のコマンドを入力して、アプリケーションのルートに進みます.

cd applications

cd applicationname/public_html

php artisan migrate

ユーザーテーブルは、データベースで作成されます.
では、システムに通知を送信できるようにレコードを追加しましょう.データベースマネージャに移動し、テーブルに簡単なレコードを追加します.システムがこのメールアドレスに通知を送るので、有効な電子メールIDを加えるようにしてください.

ユーザーモデルが作成されたので、見てみましょう.アプリ/ユーザーに移動します.以下のコードを持つPHP

<?php

namespace App;

use Illuminate\Notifications\Notifiable;

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable

{

   use Notifiable;

   protected $fillable = [

       'name', 'email', 'password',

   ];

   protected $hidden = [

       'password', 'remember_token',

   ];

}
あなたが密接に見るならば、通知可能な形質は使われます.あなたのモデルを通知可能にするたびに、あなたがしなければならないすべては、使用照度\通知\通知のインポートですあなたのモデルの特性.
特定の通知チャネルが通知可能な特定の情報を期待することに注意してください.たとえば、メールチャンネルは、モデルが「メール」プロパティを持っていることを期待します.

メール経由で通知


SSHに戻って、アプリケーションのルートに頭を進め、次のコマンドを実行します.

php artisan make:notification Newvisit
今、アプリ/通知/新しい訪問に移動します.PHPこのファイルで次のコードを見つけます

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;

use Illuminate\Notifications\Notification;

use Illuminate\Contracts\Queue\ShouldQueue;

use Illuminate\Notifications\Messages\MailMessage;

class Newvisit extends Notification

{

   use Queueable;

   public function __construct()

   {

       //

   }

   public function via($notifiable)

   {

       return ['mail'];

   }

   public function toMail($notifiable)

   {

       return (new MailMessage)

                   ->line('The introduction to the notification.')

                   ->action('Notification Action', url('/'))

                   ->line('Thank you for using our application!');

   }

   public function toArray($notifiable)

   {

       return [

           //

       ];

   }

}
このコードを理解しましょう.最初に、コンストラクタを持ち、関連するデータを注入します.
public function via($notifiable)

   {

       return ['mail'];

   }
その後、via ()メソッドを使用して、個々のインスタンスに通知を送信するための通知メソッドを選択できます.
次に、3つの属性を返す** tomail () **メソッドを持ちます.最初の行は、メールの開始体を指定する行です.次に、ボタンの名前とボタンをリダイレクトするURLを指定するアクションがあります.最後に、メールの終了段落を指定します.以下はサンプル出力です:

       ->line('The introduction to the notification.')

       ->action('Notification Action', 'https://laravel.com')

       ->line('Thank you for using our application!');

メールでララベルで通知を送る


ルート/ウェブに移動します.PHPで次のコードをペーストします.

<?php

use App\Notifications\Newvisit;

Route::get('/', function () {

$user = App\User::first();

$user->notify(new Newvisit("A new user has visited on your application."));

   return view('welcome');

});
を使用して通知クラスをインポートする必要があります\通知\newVisitそれからルート関数では、私は@ *= user = app\user ::first ()で挿入したユーザ表から最初のレコードを呼びました.次に、* *通知機能を使用して、次の行のコード:$ user -> notify ( new - newVisit (新しいユーザがアプリケーションを訪問しました))でNewVisitインスタンスで通知を送信します.
今開いているアプリケーション\通知\new訪問.PHPで次のコードを追加します.

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;

use Illuminate\Notifications\Notification;

use Illuminate\Contracts\Queue\ShouldQueue;

use Illuminate\Notifications\Messages\MailMessage;

class Newvisit extends Notification

{

   use Queueable;

   protected $my_notification; 

   public function __construct($msg)

   {

       $this->my_notification = $msg; 

   }

   public function via($notifiable)

   {

       return ['mail'];

   }

   public function toMail($notifiable)

   {

       return (new MailMessage)

                   ->line('Welcome '.$this->my_notification)

                   ->action('Welcome to Cloudways', url('www.cloudways.com'))

                   ->line('Thank you for using our application!');

   }

   public function toArray($notifiable)

   {

       return [

           //

       ];

   }

}
次は開きます.envファイルとデータベースの資格情報とメーラー関数を設定します.このステップの詳細についてはLaravel Emailの記事をチェックしてください..envファイルは次のようになります.

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=zzjudekqvs

DB_USERNAME=zzjudekqvs

DB_PASSWORD=

BROADCAST_DRIVER=log

CACHE_DRIVER=file

SESSION_DRIVER=file

QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1

REDIS_PASSWORD=null

REDIS_PORT=6379

MAIL_DRIVER=smtp

MAIL_HOST=smtp.gmail.com

MAIL_PORT=587

[email protected]

MAIL_PASSWORD=

MAIL_ENCRYPTION=tls

PUSHER_APP_ID=

PUSHER_APP_KEY=

PUSHER_APP_SECRET=
今は万事準備ができました.Cloudwaysプラットフォームの「アプリケーション」タブに移動し、「起動」ボタンをクリックします.あなたはメールを介して通知されます.


ララベルでスラックを介して通知を送る


を作成し、スラックの通知を送信するには、作曲家を介してguzzleをインストールする必要があります.SSHを起動し、アプリケーションのルートで次のコマンドを実行します.

composer require guzzlehttp/guzzle

php artisan make:notification Newslack
あなたはスラック通知のための新しいクラスが必要になります.このためには、/通知/newslackアプリに移動します.PHPをペーストし、次のコードを貼り付けます.

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;

use Illuminate\Notifications\Notification;

use Illuminate\Contracts\Queue\ShouldQueue;

use Illuminate\Notifications\Messages\MailMessage;

use Illuminate\Notifications\Messages\SlackMessage;

class Newslack extends Notification

{

   use Queueable;

   public function __construct()

   {

       //

   }

   public function via($notifiable)

   {

       return ['slack'];

   }

   public function toSlack($notifiable)

   {

       return (new SlackMessage)

           ->content('A new visitor has visited to your application . $this->user->first(1->name)');

   } 

}
ここで、vi ()メソッドは通知のためのメディアを定義します** toslack ()メソッドはスラックに通知を送ります.

着信ウェブフックを設定する


現在スラック通知を受け取るために、https://{yourteam}.slack.com/appsに行きます.「着信webhook」タイプを選んで、新しい構成を加えてください.

WebhookのURLをコピーし、あなたのLaravelアプリに頭を戻す.
このWebhookを返すRoutenOtificationForslator ()メソッドを実装する必要があります.したがって、アプリケーション/ユーザーに移動します.PHPで次の関数を追加します.

public function routeNotificationForSlack()

   {

       Return 'your_webhook_url';

   }
今ルート/ウェブに移動します.PHPを追加し、次のルートを追加します.

Route::get('/slack', function () {



$user = App\User::first();



$user->notify(new Newslack());



   echo "A slack notification has been send";



});
今すぐCloudwayプラットフォームのアプリケーションタブに移動し、[スタート]ボタンをクリックし、[ URLの追加]をクリックします.下記のようにスラック通知が表示されます.

最終語


Laravelの通知システムは、プロジェクトに値の多くを追加する機能を実装する魅力的で非常に簡単です.この例を使用すると、任意の問題なしにあなたのlaravelアプリに統合独自の通知システムを作成することができます.あなたがどんな助けを必要とするならば、あなたは下記でコメントすることができます、あるいは、私はdmで私をdmします.ハッピーコーディング.