如何在Laravel中实现自定义频道通知

时间:2019-01-14 19:19:43

标签: php laravel

我正在尝试编写我的自定义laravel频道通知,例如:https://laravel.com/docs/5.7/notifications#custom-channels

我写了这段代码:

AimonChannel.php

class AimonChannel{
public function send($notifiable, Notification $notification)
  {

    $message = $notification->toAimon($notifiable);
    if (is_string($message)) {
      $message = new AimonMessage($message);
    }
    //some code to send sms with curl

}

AimonMessage.php

class AimonMessage
{

  public $messaggio = "";

  public function messaggio($messaggio){
    $this->messaggio = $messaggio;
  }

}

SendAimonMessage.php

class SendAimonMessage extends Notification
{
  use Queueable;
  protected $messaggio;

public function __construct($messaggio)
  {
    $this->messaggio = $messaggio;
  }

public function via($notifiable)
  {
    return [AimonChannel::class];
  }

public function toAimon($notifiable)
  {

    return (new AimonMessage())
    ->messaggio($this->messaggio);
  }
}

因此,代码:

$user->notify(new SendAimonMessage('my custom message'));

已发送,但没有文本。 问题出在AimonChannel的send()函数中; $ message变量始终为null。 我的代码错误在哪里? 谢谢!

1 个答案:

答案 0 :(得分:0)

在messaggio函数中添加返回语句,如下所示:

class AimonMessage {

    public $messaggio = "";
    public function messaggio($messaggio){ 
        $this->messaggio = $messagio;
        return $this;
    }
}