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
Reference
이 문제에 관하여(Laavel 5.7 메일 주소 확인도 일본어로 포함), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PKunito/items/8408990a4760f5e7d2e7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)