我需要帮助来解决通知系统的问题。
以下是我的通知类:
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
class ApplicationReceived extends Notification
{
use Queueable;
private $testCode;
private $recipientName;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct($testCode='',$name='')
{
$this->testCode=$testCode;
$this->recipientName=$name;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->greeting("Dear ".$this->recipientName)
->subject('Your Application Received for The Entrepreneur')
->line("Your application to participate in The Entrepreneur project has been received by us")
->line("Follow the link below to take a test to complete your application")
->action('Take Test', url('/taketest/'.$this->testCode))
->line('Thank you for your interest in The Entrepreneur project!');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
这就是我所说的:
//Notify the candidate
$candidate->notify(new ApplicationReceived($candidate->testcode, $candidate->othernames));
return redirect('/signup')->with('msg', "<div class='alert alert-success'><strong>Your registration information was successfully submitted!</strong><br /> Please check your email for a link to take a test to complete your enrollment!!!</div>");
当应用程序运行时,它会发送通知,但随后会抛出以下致命错误消息
Mailer.php第470行中的FatalErrorException: 未找到类'Illuminate \ Mail \ Events \ MessageSent
我将非常感谢您指出我在这里出错的地方。
答案 0 :(得分:2)
类Illuminate\Mail\Events\MessageSent
仅在最后一个版本的laravel(5.4.18)中添加,因此您可以这样进行:
在上次运行出错的情况下运行composer update
。
如果错误仍然存在恕我直言,这可能是一个权限问题,所以有两种情况:
1)您使用未在供应商目录中写入权限的用户运行composer update
,因此您必须使用其他用户(请参阅案例2)
2)您使用 root 运行composer update
并且忘记了chown
laravel目录到Web服务器用户/组,即:
chmod -R nginx:nginx /path/to/laraveldir
使用您的网络服务器nginx:nginx
进行替换user:group
。
在任何一种情况下,停止和启动到网络服务器服务也可以提供帮助。
答案 1 :(得分:1)
感谢@dparoli的建议。
但是,我同时尝试composer dumpautoload
和composer update
都无济于事。
实际上,我所做的解决问题的方法与你的建议非常接近。创建一个新的laravel项目后,我意识到它包含与MessageSending.php位于同一位置的缺失文件(MessageSent.php)。
所以,我只是将文件(MessageSent.php)复制到我自己的项目中,并且有效。
感谢您的努力,并指出了我正确的方向。
我真的希望这有助于某人