Уведомление по почте при создании нового пользователя в laravel - PullRequest
0 голосов
/ 07 июня 2018

Я использую Laravel 5.6.Мой вопрос больше о синтаксисе.После User :: create я написал следующее: RegisterController:

Mail::to($user->email)->cc($sponsor1->email)->bcc($sponsor2->email)->send(new NuevoVendedor($user));         return Redirect::to('login');

$ спонсор1 и $ спонсор2, они просто еще один пользователь, но я не получаю никаких писем.

Пространства имен импортированы.

Мой почтовый сервис работает, он работает нормально, когда я делаю "Забыли пароль".

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

Как я могу увидеть ошибки в моих контроллерах, когда они не связаны с представлением get: route или они не получают ошибку в laravel?(В планировании, например).Есть ли способ увидеть var_dump, dd () или что-то в консоли?

Вот мой полный регистр контроллера:

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Illuminate\Support\Facades\Log;
use App\Mail\NuevoVendedor;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Mail;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use App\Notifications\UserRegisteredSuccessfully;

class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */

    use RegistersUsers;

    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
    protected $redirectTo = '/';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'type' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6',

        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    { 
        return $user =User::create([
            //general
            'type' => $data['type'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),

            'remember_token'=>$data['_token'],
            'phone_number'=>$data['phone_number'] , 
            'how' =>$data['how'], 
            'state' =>$data['state'], 
            'city' =>$data['city'], 
            'address' =>$data['address'], 
            //usuarios normales 
            'first_name'=> isset($data['first_name']) ? $data['first_name']:null, 
            'last_name'=>isset($data['last_name']) ? $data['last_name']:null , 
            'sponsor'=> isset($data['sponsor']) ? $data['sponsor']:null, 
            //providers
            'commercial_name'=>isset($data['commercial_name']) ? $data['commercial_name']:null,
            'rut'=>isset($data['rut']) ? $data['rut']:null,
            'agcw_sponsor'=>isset($data['agcw_sponsor']) ? $data['agcw_sponsor']:null,

        ]);

        $data["sponsor"] = $sponsorID;

        Log::info($sponsorID);

        $sponsor1=DB::table("users")->select("email","id","sponsor")->where("id","=",$sponsorID)->first();

        $sponsor2id=$sponsor1->sponsor;
        $sponsor2=DB::table("users")->select("email")->where("id","=",$sponsor2id)->first();

        $sponsorEmail=$sponsor1->email;
        $sponsor2Email=$sponsor2query->email;

        Mail::to($data["email"], $sponsorEmail, $sponsor2Email)->send(new NuevoVendedor($user));

        return Redirect::to('login');


    }

}

1 Ответ

0 голосов
/ 07 июня 2018

Документации laravel иногда недостаточно, поэтому обычно я обращаюсь к исходному коду laravel , чтобы понять, как он реализован.

Просмотр исходного кода Mailer и PendingMail класс:

Можно заметить, что переменная $cc является массивом, также функции to(), cc(), bcc() получают смешанные переменныепозже для него будут заданы переменные массива $to, $cc, $bcc.

Что означает, что ваш метод должен передавать массив писем вместо строки письма.

Такесли вы добавите скобки для переноса электронных писем, то все будет в порядке, например:

Mail::to([$user->email])
      ->cc([$sponsor1->email])
      ->bcc([$sponsor2->email])
      ->send(new NuevoVendedor($user));

return Redirect::to('login');

Также я заметил, что спонсор2, возможно, должен использовать метод спонсор1 в cc(), так что теперь вы можете сделать это:

Mail::to([$user->email])
      ->cc([$sponsor1->email, $sponsor2->email])
      ->send(new NuevoVendedor($user));

return Redirect::to('login');

Или даже вы можете очистить немного больше:

Mail::to([$user->email, $sponsor1->email, $sponsor2->email])
      ->send(new NuevoVendedor($user));

return Redirect::to('login');

Это должно сработать, дайте мне знать, если сработало хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...