Измените представление в электронном письме пароля сброса, используя Laravel 5.3

Я использую Laravel 5.3 и сейчас работаю над опцией сброса пароля на моей CRM.

мой CRM многоязычный, поэтому мне нужно изменить шаблон электронной почты / представление, которое отправляется клиенту на основе его языка, на самом деле мне просто нужно изменить RTL на LTR — это значение установлено в файле cookie, который называется «user_direction» ».

Я использую стандартную загрузочную аутентификацию Laravel, которая включает класс ResetPassword.

вот что есть сейчас:

<?php

namespace Illuminate\Auth\Notifications;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;

class ResetPassword extends Notification
{
public $token;

public function __construct($token)
{
$this->token = $token;
}

public function via($notifiable)
{
return ['mail'];
}

public function toMail($notifiable)
{
$url        = url('password/reset',$this->token);
$subject    = trans('global.reset_password_email_subject');
$greeting   = trans('global.reset_password_email_greeting');
$line_01    = trans('global.reset_password_email_line_01');
$action     = trans('global.reset_password_email_action');
$line_02    = trans('global.reset_password_email_line_02');

return (new MailMessage)
->subject($subject)
->greeting($greeting)
->line($line_01)
->action($action, $url)
->line($line_02);
}
}

и это идея того, что я хочу иметь, но я не знаю, как написать это правильно:

    public function toMail($notifiable)
{
$url        = url('password/reset',$this->token);
$subject    = trans('global.reset_password_email_subject');
$greeting   = trans('global.reset_password_email_greeting');
$line_01    = trans('global.reset_password_email_line_01');
$action     = trans('global.reset_password_email_action');
$line_02    = trans('global.reset_password_email_line_02');

$view = "notifications::email";
if($request->cookie('user_direction') == "rtl"):
$view = "notifications::email-rtl";
endif;

return (new MailMessage)
->view($view)
->subject($subject)
->greeting($greeting)
->line($line_01)
->action($action, $url)
->line($line_02);
}

Спасибо за помощь!

0

Решение

Вы можете изменить вид сброса паролей, переопределив функцию в ResetPasswords Trait.

Просто добавьте следующую функцию в ResetPasswordController и измените ваш вид.

/**
* Display the password reset view for the given token.
*
* If no token is present, display the link request form.
*
* @param  \Illuminate\Http\Request  $request
* @param  string|null  $token
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function showResetForm(Request $request, $token = null)
{
return view('auth.passwords.reset')->with(
['token' => $token, 'email' => $request->email]
);
}
0

Другие решения

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

сначала я добавляю «использовать Cookie;»

public function toMail($notifiable)
{
$user_language_direction = Cookie::get('user_direction');

$url        = url('password/reset',$this->token);
$subject    = trans('global.reset_password_email_subject');
$greeting   = trans('global.reset_password_email_greeting');
$line_01    = trans('global.reset_password_email_line_01');
$action     = trans('global.reset_password_email_action');
$line_02    = trans('global.reset_password_email_line_02');

$view       = "notifications::email";
if($user_language_direction == "rtl")
$view   = "notifications::email-rtl";

return (new MailMessage)
->view($view,array())
->subject($subject)
->greeting($greeting)
->line($line_01)
->action($action, $url)
->line($line_02);
}
0

По вопросам рекламы [email protected]