с использованием Laravel 7.19
для всех моих маршрутов требуется языковой стандарт, включая мои маршруты Auth для поддержки разных языков. И я активировал проверку электронной почты для пользователей.
Итак, как только пользователь, который не подтвердил свой адрес электронной почты, пытается открыть часть моего веб-сайта, требующую проверки электронной почты, Laravel автоматически перенаправляет их на этот route: verify.notice
Проблема в том, что для маршрута требуется параметр локали, но я не знаю, как передать локаль в маршрут. Итак, я получаю это сообщение об ошибке
Missing required parameters for [Route: verification.notice] [URI: {locale}/email/verify].
Кто-нибудь знает функцию, которая перенаправляет меня на маршрут: verify.notice? Потому что мне нужно отрегулировать или перезаписать его, чтобы я мог передать ему параметр локали.
My web. php
Route::group(['middleware' => ['setlocale'],'prefix' => '{locale}', 'where' => ['locale' => '[a-zA-Z]{2}']], function() {
Auth::routes(['verify' => true]);
});
EDIT: Found Something usefule. Внутри файла /vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php
Там дескриптор функции
Если я добавлю app () -> getLocale () к нему сообщение об ошибке исчезло. Сейчас выглядит так
public function handle($request, Closure $next, $redirectToRoute = null)
{
if (! $request->user() ||
($request->user() instanceof MustVerifyEmail &&
! $request->user()->hasVerifiedEmail())) {
return $request->expectsJson()
? abort(403, 'Your email address is not verified.')
: Redirect::route($redirectToRoute ?: 'verification.notice',app()->getLocale());
}
return $next($request);
}
Но я не думаю, что вы должны вносить изменения в /vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php
Как правильно перезаписать эту функцию?