php - 更改电子邮件验证错误消息 Laravel 5.7
问题描述
我正在使用 Laravel 5.7 电子邮件验证。当我尝试登录时,它说 - Your email address is not verified
http://joxi.ru/n2YqYJaIo1XGO2
我需要将此消息更改为另一种语言,但找不到更改的位置。在资源/语言中 - 有验证和其他消息,但找不到这个。谢谢。
解决方案
更好的解决方案,改用这个。
您必须实现一个自定义中间件,您可以使用 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++ 的 find in file 功能并扫描了我的 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 忽略供应商文件夹,因此在推送时不会将其推送到外部存储库。
您将需要更改.gitignore
文件。
Laravel 更新也将恢复此更改,因此您将不得不重写它,现在这个答案的顶部有一个更好的解决方案。
推荐阅读
- angular - 如何将解析器返回的数据组合到 combineLatest 调用中?
- swiftui - 双线表格选择器
- python - Python断言不起作用:限制用户仅输入规定的数字但断言不起作用
- python - Python:如何使用动态键从字典中动态获取值并将其绘制到 DataFrame?
- node.js - 实现 PATCH API 端点的优雅方式?
- python - 比较csv文件的行
- python - 如果语句不起作用;需要帮助
- asp.net - 从GridView中删除一行后如何执行命令
- python - 在 cursor.description 中避免 None?
- netsuite - Netsuite - 跟踪大量删除的记录