5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel パスワードリセットメールのデザイン変更

Posted at

##はじめに
今回の記事はLaravelにある
パスワードリセット機能、こちらのメール部分の編集方法を
忘れないようにメモを残しておきます。

パスワードリセットメール

まず、デフォルトの画面をみてみましょう

image.png

はい。見事に英語ですね
おまけに、上の方にLaravelのロゴ入りです

これだとメールが届いたユーザーが困惑してしまうので
メールの文章を編集していきましょう

vendor/laravel/framework/src/Illuminate/Auth/Notifications/ResetPassword.php
vendor/laravel/framework/src/Illuminate/Notifications/resources/views/email.blade.php

上記の2ファイルがパスワードリセットメールの箇所なので確認していきましょう

ResetPassword.php

まずこちらのファイルからいきましょう

    protected function buildMailMessage($url)
    {
        return (new MailMessage)
            ->subject(Lang::get('Reset Password Notification'))
            ->line(Lang::get('You are receiving this email because we received a password reset request for your account.'))
            ->action(Lang::get('Reset Password'), $url)
            ->line(Lang::get('This password reset link will expire in :count minutes.', ['count' => config('auth.passwords.'.config('auth.defaults.passwords').'.expire')]))
            ->line(Lang::get('If you did not request a password reset, no further action is required.'));
    }

上記のように記載されているクラスのreturnの中の文章を見てみると

先ほどメールに送られてきた文章と一致していることがわかります。

つまり、この文章をmailのbladeに渡して表示しているということがわかりました。

直接ResetPassword.php内を編集しても文字の変更もできますが

「vendor」配下は汚さないのが一般的なので

英語を日本語に変換するという形で対応していきましょう

変換ファイルの作成

まず、始めに
config/app.php の下記の箇所を書き換えてください。

   - 'locale' => 'en',
   + 'locale' => 'ja',

   -'faker_locale' => 'en_US', 
   +'faker_locale' => 'ja_JP', 

次に
resources/lang の配下に

ja.jsonというファイルを作成します

中身は

{
    "Hello!": "ご利用ありがとうございます。",
    "Regards":"よろしくお願いいたします。",
    "Reset Password Notification": "パスワード再設定のお知らせ",
    "Reset Password":"パスワードの再設定を行う",
    "You are receiving this email because we received a password reset request for your account.": "あなたのアカウントでパスワード再設定のリクエストがありました",
    "This password reset link will expire in :count minutes.": "このリンクの有効期限は受信してから、:count 分です。",
    "If you did not request a password reset, no further action is required.": "内容にお心当たりがない場合は、本メールは破棄して頂けるようお願いいたします。"
}

※日本語訳は、自由に設定してください

上記のように変更して、パスワードリセットメールを送ってみると。。。

image.png

日本語になっています!!

email.blade.php

次に編集するファイルです
laravelではおなじみのbladeファイルですね

@component('mail::message')
{{-- Greeting --}}
@if (! empty($greeting))
# {{ $greeting }}
@else
@if ($level === 'error')
# @lang('Whoops!')
@else
# @lang('Hello!')
@endif
@endif

{{-- Intro Lines --}}
@foreach ($introLines as $line)
{{ $line }}

@endforeach

{{-- Action Button --}}
@isset($actionText)
<?php
    switch ($level) {
        case 'success':
        case 'error':
            $color = $level;
            break;
        default:
            $color = 'primary';
    }
?>
@component('mail::button', ['url' => $actionUrl, 'color' => $color])
{{ $actionText }}
@endcomponent
@endisset

{{-- Outro Lines --}}
@foreach ($outroLines as $line)
{{ $line }}

@endforeach

{{-- Salutation --}}
@if (! empty($salutation))
{{ $salutation }}
@else
@lang('Regards'),<br>
{{ config('app.name') }}
@endif

{{-- Subcopy --}}
@isset($actionText)
@slot('subcopy')
@lang(
    "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\n".
    'into your web browser:',
    [
        'actionText' => $actionText,
    ]
) <span class="break-all">[{{ $displayableActionUrl }}]({{ $actionUrl }})</span>
@endslot
@endisset
@endcomponent

上記のようになっているかと思います。

こちらも「vendor」配下のファイルになりますので直接変更をするのは、やめておきましょう

なので、bladeを編集するために下記のコマンドを実行します

 php artisan vendor:publish --tag=laravel-notifications 

すると、同じ内容のファイルが下記のディレクトリに複製されています。

resources/views/vendor/Notifications /email.blade.php

下記のコマンドも実行してください!
logoマークやデザインを変更する際に必要になるので!

 php artisan vendor:publish --tag=laravel-notifications 

resources/views/vendor/にmailフォルダが出来たと思います。

これで準備は終わりです。レイアウトを変更していきましょう

###logoの変更

メールにあったLaravelのlogoを変更するには

先ほど複製したmailフォルダのhtml配下にあるheader.bladeを編集すれば
logoを変えたり、非表示にしたりできます。

###footerの変更

コピーライトは
message.bladeの24行目にあるのでこちらを変更するなり削除するなりしましょう!

##デザインの変更

最後にデザインの変更です。
ボタンの色や背景の色の変更方法です。

編集するファイルの場所は、先ほどのコマンドで作成した

resources/views/vendor/mail/html/themes 配下にある

default.cssです!

例えば背景色を変更したいなら

/* Body */

.body {
    -premailer-cellpadding: 0;
    -premailer-cellspacing: 0;
    -premailer-width: 100%;
    background-color: #edf2f7;
    border-bottom: 1px solid #edf2f7;
    border-top: 1px solid #edf2f7;
    margin: 0;
    padding: 0;
    width: 100%;
}

上記箇所のbackground-colorを変えるなど

このCSSファイルを変更することで
デザインを変更することができます!

長くなりましたが以上になります。

5
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?