Изменение поля "Тема" по умолчанию для проверочных писем в Laravel 5.7
Я пытаюсь изменить по умолчанию subject
поле в письме с подтверждением, которое идет с Laravel 5.7. Как и где я могу это изменить? Я искал повсюду сам и онлайн. Потому что это совершенно новый, я не могу найти ответ. Не могли бы вы мне помочь? Спасибо!
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
Это черта 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
поскольку оно содержит уведомление и может быть использовано в качестве примера для пользовательского уведомления о подтверждении.
В User.php
public function sendEmailVerificationNotification()
{
$this->notify(new MyNotification);
}
Тогда беги
php artisan make:notification MyNotification
И в своем уведомлении вы можете просто расширить до Illuminate\Auth\Notifications\VerifyEmail
Затем вы можете переопределить функцию уведомления toMail... Еще не попробовал, но это должно сработать.
Можете ли вы опубликовать свою функцию там, где вы пишете? Я использую:
\Mail::to($user)->subject('Your Subject')->bcc([$reports,$me])->send(new Declined($user));
А именно: отправьте письмо пользователю $, задайте тему, введите скрытую копию, а затем отправьте письмо во время передачи пользователю. Это для уценки почты также. Вы используете ->
оператор, чтобы добавить все дополнения для почты, так что вы можете добавить в BCC (как я сделал), а также CC и т. д.