#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());
}