Изменение поля «Тема» по умолчанию для проверочных писем в Laravel 5.7

Я пытаюсь изменить поле subject по умолчанию в электронном письме с подтверждением, которое поставляется с Laravel 5.7. Как и где его поменять? Я искал повсюду и в Интернете. Потому что это новенькое, я не могу найти ответа.


person GabMic    schedule 19.09.2018    source источник


Ответы (3)


Вам не нужно ничего кодировать. В уведомлении есть все строки, обернутые в класс Lang, так что вы можете предоставить строки перевода с английского на другой язык или даже с английского на английский, если вы просто хотите изменить формулировку.

Посмотрите в /vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php

public function toMail($notifiable)
{
    if (static::$toMailCallback) {
        return call_user_func(static::$toMailCallback, $notifiable);
    }

    return (new MailMessage)
        ->subject(Lang::getFromJson('Verify Email Address'))
        ->line(Lang::getFromJson('Please click the button below to verify your email address.'))
        ->action(
            Lang::getFromJson('Verify Email Address'),
            $this->verificationUrl($notifiable)
        )
        ->line(Lang::getFromJson('If you did not create an account, no further action is required.'));
}

Здесь вы можете увидеть все струны.

Создайте файл en.json, если у вас его еще нет в папке resources / lang.

добавить исходную строку и замену. например

{
    "Verify Email Address": "My preferred subject",
    "Please click the button below to verify your email address.":"Another translation"
}

Чтобы перевести на другой язык, измените локаль в config / app.php и создайте файл перевода с locale.json.

person Snapey    schedule 19.09.2018
comment
Это решение, которое я использовал. Спасибо. - person GabMic; 01.10.2018

Это черта MustVerifyEmail

<?php

namespace Illuminate\Auth;

trait MustVerifyEmail
{
    /**
     * Determine if the user has verified their email address.
     *
     * @return bool
     */
    public function hasVerifiedEmail()
    {
        return ! is_null($this->email_verified_at);
    }

    /**
     * Mark the given user's email as verified.
     *
     * @return bool
     */
    public function markEmailAsVerified()
    {
        return $this->forceFill([
            'email_verified_at' => $this->freshTimestamp(),
        ])->save();
    }

    /**
     * Send the email verification notification.
     *
     * @return void
     */
    public function sendEmailVerificationNotification()
    {
        $this->notify(new Notifications\VerifyEmail);
    }
}

Как видите, отправляется уведомление с именем VerifyEmail, поэтому я думаю, что переопределения этого метода в пользовательской модели с вашим собственным уведомлением будет достаточно. Вам также следует проверить этот файл: vendor/laravel/framework/src/Illuminate/Auth/Notifications/VerifyEmail.php, поскольку он содержит уведомление и может использоваться в качестве примера для вашего настраиваемого уведомления о проверке.

In User.php

    public function sendEmailVerificationNotification()
    {
        $this->notify(new MyNotification);
    }

Тогда беги

php artisan make:notification MyNotification

И в своем уведомлении вы можете просто расширить до Illuminate\Auth\Notifications\VerifyEmail

Затем вы можете переопределить функцию уведомления для почты ... Еще не пробовали, но это должно сработать.

person Erubiel    schedule 19.09.2018
comment
Всегда рада помочь! - person Erubiel; 19.09.2018
comment
Спасибо друг. Я приехал сюда через Google, и это был мой ответ. - person Ruub; 14.10.2018
comment
@Ruub, другой ответ тоже хорош, но этот хорош, если вам нужно что-то, чего нет в уведомлении по умолчанию, предоставляемом laravel. - person Erubiel; 14.10.2018
comment
Вау, спасибо. Это точный и правильный способ настройки. - person Namal; 30.01.2019

Можете ли вы разместить свою функцию по почте? Я использую:

\Mail::to($user)->subject('Your Subject')->bcc([$reports,$me])->send(new Declined($user));

А именно: отправить письмо пользователю $, установить тему, скрыть копию, затем отправить письмо, передавая пользователю. Это также для почты с уценкой. Вы используете оператор ->, чтобы добавить все дополнительные функции к почте, поэтому вы можете добавить в BCC (как я), а также CC и т. Д.

person party-ring    schedule 19.09.2018
comment
Нет, в laravel 5.7 встроено письмо с подтверждением ... оно отправляется за кулисами - person Erubiel; 19.09.2018
comment
Вопрос не в этом, хе-хе, он больше связан с этим: laravel.com/docs/5.7/verification - person Erubiel; 19.09.2018
comment
Я понимаю! Не беспокойтесь, удачи, ребята :-) - person party-ring; 19.09.2018