Изменить сообщение об ошибке подтверждения электронной почты Laravel 5.7

Я использую подтверждение по электронной почте Laravel 5.7. Когда я пытаюсь войти, он говорит — Your email address is not verified
http://joxi.ru/n2YqYJaIo1XGO2
Мне нужно изменить это сообщение на другой язык, но не смог найти, где изменить.
В ресурсах / lang — есть проверки и другие сообщения, но не удалось найти это. Благодарю.

3

Решение

ЛУЧШЕЕ РЕШЕНИЕ — ИСПОЛЬЗУЙТЕ ЭТО ВМЕСТО


Обратите внимание: еще не проверено, если кто-то проверяет это, пожалуйста, дайте мне знать, работает ли оно или нет. Должен, но я хочу быть уверен

Вам нужно будет реализовать собственное промежуточное программное обеспечение, которое вы можете создать с помощью команды ремесленника:

php artisan make:middleware EnsureEmailIsVerified

EnsureEmailIsVerified.php

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Contracts\Auth\MustVerifyEmail;

class EnsureEmailIsVerified
{
/**
* Handle an incoming request.
*
* @param  \Illuminate\Http\Request  $request
* @param  \Closure  $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (! $request->user() ||
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'YOUR CUSTOM ERROR HERE')
: Redirect::route('verification.notice');
}

return $next($request);
}
}

Вам придется нанести на карту verified введите в файл ядра новое промежуточное ПО.

app \ Http \ Kernel.php (внизу):

    /**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \App\Http\Middleware\EnsureEmailIsVerified::class, // the changed line
];

ОРИГИНАЛЬНЫЙ ОТВЕТ


Хорошо, так что я думаю, что я понял это для вас.

Я использовал функцию «Поиск в блокноте» в Notepad ++ и просканировал все файлы в моем проекте Laravel на предмет: «Ваш электронный адрес не подтвержден»

Он придумал один матч в:

\vendor\laravel\framework\src\Illuminate\Auth\Middleware\EnsureEmailIsVerified.php

Что это за файл:

<?php

namespace Illuminate\Auth\Middleware;

use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Contracts\Auth\MustVerifyEmail;

class EnsureEmailIsVerified
{
/**
* Handle an incoming request.
*
* @param  \Illuminate\Http\Request  $request
* @param  \Closure  $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle($request, Closure $next)
{
if (! $request->user() ||
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'Your email address is not verified.')
: Redirect::route('verification.notice');
}

return $next($request);
}
}

я угадывание что если вы измените эту строку: ? abort(403, 'Your email address is not verified.')

То, что вы хотите, чтобы ошибка была, например: ? abort(403, 'Please, verify your email.')

Это будет отображать это. (Пожалуйста, подтвердите это, если вы попробуете это).


Есть одна незначительная проблема с этим решением. Так как ваш .gitignore Файл указывает git игнорировать папку vendor, при нажатии она не будет отправлена ​​во внешний репозиторий.

Вам нужно будет изменить .gitignore файл. У меня все плохо с мерзавцем, и я не знаю, как это сделать. Если кто-то знает, добавьте это как комментарий, и я добавлю это к ответу.

Обновления Laravel будут также отмените это изменение, так что вам придется переписать его, теперь есть лучшее решение в верхней части этого ответа.

3

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

Следуйте по этому пути в приложении laravel «\ vendor \ laravel \ framework \ src \ Illuminate \ Auth \ Middleware \ EnsureEmailIsVerified.php». Вы найдете сообщение об ошибке «Ваш адрес электронной почты не подтвержден» здесь, в `

public function handle($request, Closure $next)
{
if (! $request->user() ||
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'Your email address is not verified.')
: Redirect::route('verification.notice');
}

return $next($request);
}
0

Вы можете перезаписать файл напрямую, как сказали другие, но при обновлении Laravel этот файл будет перезаписан Composer.

Вы должны создать новый класс Middleware с содержимым EnsureEmailIsVerified и измените объявление «проверенного» промежуточного программного обеспечения в app/Http/Kernel.php файл:

protected $routeMiddleware = [
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
// change to:
'verified' => \Your\Custom\Middleware::class,
];

Вы даже можете сделать так, чтобы сообщение прерывания использовало файл lang, чтобы вы могли изменить его в будущем.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector