2016-11-24 14 views
7

せずにユーザーに通知を送信し、私は通知が、このようなユーザーに送信されることを参照してください。私は$userが届出主体であると考えていLaravel 5.3はLaravel 5.3通知機能を持つアカウント

$user->notify(new InvoicePaid($invoice)); 

。まだアカウントを持っていないユーザーに通知を送信したいのですが?私のアプリでは、ユーザーは友達に招待状を送り、参加します。私はLaravelの通知を使用して、まだアカウントを持っていないユーザーに招待コードを送信しようとしています。私はこのような招待モデルに通知を送信する通知に使用できると思っ

class Invite extends Model 
    { 
    protected $table = 'invites'; 
    protected $fillable = array('name', 'email', 'invite_code', 'expires_at', 'invited_by'); 
    protected $dates = ['expires_at']; 
    } 

:ユーザーが誰かを招待すると

、そのデータは、このようなモデルを招待に格納されて

$invite = Invite::find($inviteId); 
$invite->notify(new InvitationNotification(ucfirst($invite->name), $invite->invite_code, $invite->expires_at)); 

しかし、上記のdoesnt仕事。私はエラーを取得する:

Call to undefined method Illuminate\Database\Query\Builder::notify() 

だから私の質問は次のとおりです。

  1. は、私が唯一のユーザーモデルに通知を送信できますか?

  2. アカウントをまだ持っていない新規ユーザーに通知を送信する方法はありますか?

  3. 私の唯一の選択は、これらのケースで通知の代わりにLaravelのMailableクラスを使用することですか?

答えて

7

あなたの記事は同じものを探していましたが、自分で答えました。

Inviteモデルのuse Notifiable;が必要です。

次にuse Illuminate\Notifications\Notifiable;をインポートし、モデルで->notifyを使用できるようになります。私は通知:)

あなたはその後、$inviteを通過していることを使用することができますを送信して処理する方法である

$invite = Invite::create([ 
    'name' => $request->get('name'), 
    'email' => $request->get('email'), 
    'token' => str_random(60), 
]); 

$invite->notify(new UserInvite()); 

通知テンプレート内。

+1

パーフェクト。それはまさに私が立ち往生していたものであり、解決策が見つからなかったので、私はこれらの通知をメールに書き直すことになりました。あなたの答えを投稿していただきありがとうございます。私は今、それを私のアプリに追加し、メール可能ではなく通知を使用します。ありがとうございました.. – Neel

2

通知は、通知可能なオブジェクトに送信されることを意味します。あなたは招待状に "通知"しません。

あなたがしたいのは、招待された相手にアプリケーションを使用するように電子メールを送信してから、そのメールアドレスにメールを送信するだけです。この場合、通知は適切ではありません。

+1

ありがとう@マーティン。論理的には、これは理にかなっています。私が通知を使用しようとしていた唯一の理由は、textとhtmlの両方に標準の電子メールテンプレートを使いやすくし、データベースエントリを追加することが容易なためです。しかし、ええ、私はmailableクラスは実際にはユーザー通知ではないという意味でおそらくより適切であると理解しています。 – Neel

1

私はちょうどこれに簡単な方法を考え出しました。まず、RegisterControllerクラスの 'register'関数をオーバーライドする必要があります。これを行うには:

use Illuminate\Http\Request; 
use Illuminate\Auth\Events\Registered; 

public function register(Request $request) 
{ 


} 

これらの行を登録関数に追加します。

  1. $user = $this->create($request->all()); //メッセージ送信を処理するために、あなたの通知クラスを設定し、[次へ
  2. return redirect()->to('/')->with('msg', 'Thanks for registering! Check your inbox for the activation link');

指定された通知クラスを呼び出すには、ユーザー

  • $user->notify(new NewRegistrationNotification($request)); //を作成して保存します。私はコンストラクタでこれのようなことをしました。

    protected $data; 
    
    public function __construct(Request $request) 
    { 
        $this->data = $request; 
    } 
    

    私はこれが誰かを助けてくれることを願っています。

  • +0

    ええ、 '1'では、通知可能なオブジェクトである' User'を作成しています。しかし私の最初の質問は、まったく作成されていないユーザーに通知を送信することでした。あなたの入力をありがとう。 – Neel

    +0

    アプリで匿名ユーザーを作成する方法通知を使用して招待状を送信する場合は、いつでも「匿名」インスタンスをインスタンス化することができます。宛先のメールアドレスを宛先の宛先メールアドレスに設定できると思います。申し訳ありませんが、コードを添付していない理由はまだ試していません。まだ試してみる必要がある場合は教えてください。 – Pendragon