Laavel 5.7 메일 주소 확인도 일본어로 포함

8057 단어 Laravellaravel5.7
이곳의 내용은 블로그에도 기재되어 있다.
나는 때때로 응용 개발을 통해 메일 주소가 진정으로 등록된 사용자 본인의 것인지 확인할 수 있다고 생각한다.
Laravel5.MustVerify Email이 7부터 추가된 것 같아서 간단하게 요약해봤어요.

전자 우편 주소 확인의 실현


인증 준비


우선 인증을 준비하세요.다음 명령을 통해 간단하게 만들 수 있습니다.
php artisan make:auth
php artisan migrate

모델


App User 모델에서 MustVerify Email 인터페이스 설정
<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

    // ...
}

루트 설정


먼저 메일 주소를 확인하는 Auth\Verification Controller를 인증 경로에 추가합니다.
Auth::routes(['verify' => true]);
이렇게 하면 메일 주소를 확인할 수 있기 때문에 경로를 보호할 수 있다.
Route::get('profile', function () {
    // Only verified users may enter...
})->middleware('verified');

메일 발송 설정


mailtrap


테스트에서 메일을 잘못 보내는 것을 피하기 위해서는 메일랩을 사용하여 내용을 확인하십시오.
무료로 사용할 수 있습니다. 아래 사이트에서 로그인하십시오.
https://mailtrap.io/

.env 파일 설정


메일랩 연결 정보 확인해.env 파일로 설정합니다.

일본어화


여기까지는 쓸 수 있지만 화면에 문자와 메일이 모두 영어로 돼 있어 일본어로 변경됐다.


auth에서 Resources/views/auth/verify를 보십시오.blade.php에 생성되었습니다.
여기 내용을 일본어로 바꿔주세요.
@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">{{ __('message.Verify.Title') }}</div>

                <div class="card-body">
                    @if (session('resent'))
                        <div class="alert alert-success" role="alert">
                            {{ __('message.Verify.NewUrl') }}
                        </div>
                    @endif

                    {{ __('message.Verify.SendActionUrl') }}<br/>
                    @lang('message.Verify.NotEmail', ['url' => route('verification.resend')])
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

메시지 본문 수정


Illuminate/Auth/MustVerifyEmail.php 내용을 확인한 후 se n d Em i lVerification Notification에서 메일을 보냈기 때문에 사용자 정의 Notification을 보내는 것으로 변경되었습니다.
Notification을 먼저 만듭니다.
php artisan make:notification VerifyEmailCustom
안에는 Verify Email입니다.php의 내용을 직접 복제하여 영어 부분을 일본어로 바꾸다.
<?php

namespace App\Notifications;

use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Facades\Lang;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;

class VerifyEmailCustom extends Notification
{
    /**
     * The callback that should be used to build the mail message.
     *
     * @var \Closure|null
     */
    public static $toMailCallback;

    /**
     * Get the notification's channels.
     *
     * @param  mixed  $notifiable
     * @return array|string
     */
    public function via($notifiable)
    {
        return ['mail'];
    }

    /**
     * Build the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        if (static::$toMailCallback) {
            return call_user_func(static::$toMailCallback, $notifiable);
        }

        return (new MailMessage)
            ->subject(Lang::getFromJson('message.Mail.Verify.Title'))
            ->line(Lang::getFromJson('message.Mail.Verify.Line'))
            ->action(
                Lang::getFromJson('message.Mail.Verify.Action'),
                $this->verificationUrl($notifiable)
            )
            ->line(Lang::getFromJson('message.Mail.Verify.OutLine'));
    }

    /**
     * Get the verification URL for the given notifiable.
     *
     * @param  mixed  $notifiable
     * @return string
     */
    protected function verificationUrl($notifiable)
    {
        return URL::temporarySignedRoute(
            'verification.verify', Carbon::now()->addMinutes(60), ['id' => $notifiable->getKey()]
        );
    }

    /**
     * Set a callback that should be used when building the notification mail message.
     *
     * @param  \Closure  $callback
     * @return void
     */
    public static function toMailUsing($callback)
    {
        static::$toMailCallback = $callback;
    }
}

User 모델


User 모델에 s e n d Em a i lVerification Notification을 다시 쓰고 잔류물 Notification을 보냅니다.
    public function sendEmailVerificationNotification()
    {
        $this->notify(new VerifyEmailCustom);
    }

알림 메시지 변경


이렇게 메일의 레이아웃을 알리는 부분은 영어이기 때문에 저쪽도 일본어를 사용합니다.
다음 명령을 사용하여 배치를 수정할 수 있습니다.
php artisan vendor:publish
resources/views/notifications/email.blade.php 파일을 만들 수 있기 때문에 내용을 변경해야 합니다.
@component('mail::message')
{{-- Greeting --}}
@if (! empty($greeting))
# {{ $greeting }}
@else
@if ($level === 'error')
# @lang('message.Mail.Whoops')
@else
# @lang('message.Mail.Opning')
@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('message.Mail.Regards')<br>{{ config('app.name') }}
@endif

{{-- Subcopy --}}
@isset($actionText)
@component('mail::subcopy')
@lang(
"message.Mail.NotClick",
[
    'actionText' => $actionText,
    'actionURL' => $actionUrl,
]
)
@endcomponent
@endisset
@endcomponent

일본어 파일


일본어 파일 resources/lang/ja/messagephp로 설정합니다.
<?php

return [
    // メールアドレスの確認
    "Verify" => [
        "Title" => "メールアドレスの確認",
        "NewUrl" => "新しく確認用のURLを送信しました。",
        "SendActionUrl" => "送られたメールを確認してURLをクリックして下さい。",
        "NotEmail" => "メールが届いていない場合は、<a href=':url'>こちら</a>をクリックして下さい。"
    ],

    // メール
    "Mail" => [
        "Opning" => "ご利用ありがとうございます。",
        "Whoops" => "ご迷惑をおかけいたします。",
        "Regards" => "引き続きのご利用をよろしくお願いいたします。",
        "NotClick" =>"「:actionText」がクリックできない場合は以下のURLをブラウザにコピーして下さい。\n[:actionURL](:actionURL)",

        // メールアドレスの確認
        "Verify" => [
            "Title" => "メールアドレスの確認",
            "Line" => "メールアドレスを確認するには、下のボタンをクリックしてください。",
            "Action" => "メールアドレスを確認",
            "OutLine" =>"アカウントを作成しなかった場合、それ以上の操作は必要ありません。"
        ]
    ]
];

참고 자료


https://blog.capilano-fw.com/?p=289#i-7
https://blog.capilano-fw.com/?p=1099#i-7

좋은 웹페이지 즐겨찾기