gpt4 book ai didi

php - 更改电子邮件验证错误消息 Laravel 5.7

转载 作者:可可西里 更新时间:2023-11-01 00:54:25 26 4
gpt4 key购买 nike

我正在使用 Laravel 5.7 邮箱验证。当我尝试登录时,它说 - 您的电子邮件地址未验证
http://joxi.ru/n2YqYJaIo1XGO2我需要将此消息更改为另一种语言,但找不到更改位置。在 resources/lang - 有验证和其他消息,但找不到这个。谢谢。

最佳答案

更好的解决方案,改用它。


您必须实现一个自定义中间件,您可以使用 artisan 命令创建该中间件:

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, '您的电子邮件地址未验证。')

无论您希望错误是什么,例如:? abort(403, '请验证您的电子邮件。')

它会显示那个。 (如果您尝试,请确认这一点)。


此解决方案存在一个小问题。由于您的 .gitignore 文件告诉 git 忽略 vendor 文件夹,因此在推送时它不会被推送到外部仓库。

您需要更改 .gitignore 文件。

Laravel 更新将恢复此更改,因此您将不得不重写它,现在这个答案的顶部有一个更好的解决方案。

关于php - 更改电子邮件验证错误消息 Laravel 5.7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53187206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com