Я использую 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);
}
Спасибо за помощь!
Вы можете изменить вид сброса паролей, переопределив функцию в 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]
);
}
после просмотра некоторых руководств на 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);
}