Класс Laravel не найден для почты - PullRequest
0 голосов
/ 18 марта 2019

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

У меня есть почтовый класс с именем SignedUp в App \ Mail \ SignedUp.php.

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

namespace Illuminate\Foundation\Auth;

use App\Organization;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\Events\Registered;
use App\Mail\SignedUp;

trait RegistersUsers
{
    use RedirectsUsers;

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

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

    /**
     * Handle a registration request for the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    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());
    }

Когда я регистрирую нового пользователя, я получаю это сообщение: Класс 'Подсветить \ Основа \ Auth \ Mail' не найден

, если я изменю use App\Mail\SignedUp; на use App\Mail;,ошибка все еще: Класс 'Подсветка \ Фонд \ Auth \ Mail' не найден

use Mail; дает мне Подсветка \ Foundation \ Auth \ SignedUp 'не найдена

use App\Mail\SignedUp; дает мне Класс 'Illuminate \ Foundation \ Auth \ Mail' не найден

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

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

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

Вот мой файл класса почты:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

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');
    }
}

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

Я наконец наткнулся на ответ.Мне также нужно было импортировать класс использования Illuminate\Support\Facades\Mail;.

Так что это работает:

use App\Mail\Signedup;
use Illuminate\Support\Facades\Mail;
0 голосов
/ 18 марта 2019

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

use App\Mail\SignedUp;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\Request;
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());
    }
...