Класс Laravel не найден для почты

#laravel #class #email #namespaces #laravel-mail

#laravel #класс #Адрес электронной почты #пространства имен #laravel-mail

Вопрос:

Я пытаюсь сгенерировать электронное письмо с уведомлением веб-мастеру о новой регистрации на сайте, который я создаю.

У меня есть почтовый класс под названием SignedUp в AppMailSignedUp.php .

В файле Illuminate / Foundation / Auth / RegistersUser у меня есть следующее:

 namespace IlluminateFoundationAuth;

use AppOrganization;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use IlluminateAuthEventsRegistered;
use AppMailSignedUp;

trait RegistersUsers
{
    use RedirectsUsers;

    /**
     * Show the application registration form.
     *
     * @return IlluminateHttpResponse
     */
    public function showRegistrationForm()
    {
        $organizations = Organization::all();

        return view('auth.register', compact('organizations'));
    }

    /**
     * Handle a registration request for the application.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function register(Request $request)
    {

        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $this->guard()->login($user);

        Mail::to('example@example.com')->send(new SignedUp($user));        

        return $this->registered($request, $user)
                        ?: redirect($this->redirectPath());
    }
  

Когда я регистрирую нового пользователя, я получаю это сообщение:
Класс ‘Illuminate Foundation Auth Mail’ не найден

если я изменю use AppMailSignedUp; на use AppMail; , ошибка по-прежнему: Класс ‘Illuminate Foundation Auth Mail’ не найден

use Mail; выдает мне, что Illuminate Foundation Auth SignedUp’не найден

use AppMailSignedUp; выдает мне класс ‘Illuminate Foundation Auth Mail’, не найден

Вообще не пытаюсь импортировать класс и вместо этого меняю свое утверждение на: Mail::to('example@example.com')->send(new SignedUp($user)); , я получаю класс ‘Illuminate Foundation Auth SignedUp’ не найден

Не могу понять, как заставить его найти мой почтовый класс.

Я просто гадаю и стреляю в темноте — кто-нибудь может увидеть, что я делаю не так?

Вот мой файл класса mail:

 <?php

namespace AppMail;

use IlluminateBusQueueable;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;
use IlluminateContractsQueueShouldQueue;

class SignedUp extends Mailable
{
    use Queueable, SerializesModels;

    public $url = 'https://av-cuauhtemoc.org/users';

    public $user;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('example@example.com')->view('emails.new-registration');
    }
}
  

Комментарии:

1. можете ли вы добавить сюда свой файл класса mail? я думаю, что есть проблема с вашими пространствами имен

2. @Zartosht только что добавил его.

Ответ №1:

Я, наконец, наткнулся на ответ. Мне также нужно было импортировать класс use IlluminateSupportFacadesMail; .

Итак, это работает:

 use AppMailSignedup;
use IlluminateSupportFacadesMail;
  

Ответ №2:

прежде всего, вам не следует изменять Illuminate/Foundation/Auth/RegistersUser файл, вместо этого вы должны перезаписать этот метод в вашем RegisterController :

 use AppMailSignedUp;
use IlluminateAuthEventsRegistered;
use IlluminateHttpRequest;
use Mail;

public function register(Request $request)
    {
        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $this->guard()->login($user);

        Mail::to('example@example.com')->send(new SignedUp($user));

        return $this->registered($request, $user)
            ?: redirect($this->redirectPath());
    }