Изменить сообщение об ошибке подтверждения электронной почты Laravel 5.7 - PullRequest
0 голосов
/ 07 ноября 2018

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

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

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


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

Вам потребуется реализовать специальное промежуточное ПО, которое вы можете создать с помощью команды 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, 'Your email address is not verified.')

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

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


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

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

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

0 голосов
/ 07 ноября 2018

Вы можете перезаписать файл напрямую, как сказали другие, но при обновлении 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 голосов
/ 07 ноября 2018

Следуйте по этому пути в приложении 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...