在Laravel 5.4通知中找不到类'Illuminate \ Mail \ Events \ MessageSent'

时间:2017-04-13 12:40:08

标签: php laravel-5 notifications

我需要帮助来解决通知系统的问题。

以下是我的通知类:

<?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

the error displayed

我将非常感谢您指出我在这里出错的地方。

2 个答案:

答案 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 dumpautoloadcomposer update都无济于事。

实际上,我所做的解决问题的方法与你的建议非常接近。创建一个新的laravel项目后,我意识到它包含与MessageSending.php位于同一位置的缺失文件(MessageSent.php)。

所以,我只是将文件(MessageSent.php)复制到我自己的项目中,并且有效。

感谢您的努力,并指出了我正确的方向。

我真的希望这有助于某人