Laravel пользовательский пароль по электронной почте - PullRequest
0 голосов
/ 29 августа 2018

Я использую laravel 5.6 и успешно отправляю представление в виде электронного письма.

Я использую этот код:

Mail::to($user->email)->send(new Welcome($user));

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

Я пытаюсь написать свой собственный ResetPasswordNotification:

<?php

namespace App\Notifications;

use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Notifications\Messages\MailMessage;

class ResetPasswordNotification extends ResetPassword
{
/**
 * Build the mail representation of the notification.
 *
 * @param  mixed  $notifiable
 * @return \Illuminate\Notifications\Messages\MailMessage
 */
public function toMail($notifiable)
{
    if (static::$toMailCallback) {
        return call_user_func(static::$toMailCallback, $notifiable, $this->token);
    }

    return (new MailMessage)
        ->line('Vous recevez cet email car une demande de modification du mot de passe pour votre compte a été initialisée.')
        ->action('Réinitialiser le mot de passe', url(config('app.url').route('password.reset', $this->token, false)))
        ->line('Si vous n\'êtes pas à l\'origine de cette demande, merci de contacter l\'équipe du site.');
}
}

Но я могу только перевести письмо. Я хочу отправить свое собственное представление в соответствии с моим собственным шаблоном.

Возможно ли это?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете определить свой собственный вид с помощью MailMessage

Пример:

return (new MailMessage)->view(
    'your.email.blade', [
        'data' => $data
    ]
);

Подробнее см. https://laravel.com/docs/5.6/notifications#mail-notifications.

Edit:

Поскольку вы используете уведомление о сбросе пароля, вам сначала нужно будет найти пользователя. Я считаю, что объект $notifiable в toMail должен быть экземпляром черты CanResetPassword, поэтому вам придется искать пользователя по электронной почте:

public function toMail($notifiable) {
{
    $email = $notifiable->getEmailForPasswordReset();
    $user = User::where('email', '=', $email)->first();

    return (new MailMessage)->view(
        'your.email.blade', [
            'user' => $user,
        ]
    );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...