Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

ilex01's avatar
Level 5

Missing required parameter for [Route: password.reset] [URI: {lang}/password/reset/{token}] [Missing parameter: lang].

Error:

http://127.0.0.1:8000/en/password/email

Missing required parameter for [Route: password.reset] [URI: {lang}/password/reset/{token}] [Missing parameter: lang].

In routes/web.php:

Route::post('/password/email', function (Request $request, $lang) {
	// Vérifie si la langue est valide
	if (in_array($lang, ['en', 'fr'])) {
		// Définit la langue de l'application
		App::setLocale($lang);

		// Stocke éventuellement la langue dans la session
		Session::put('locale', $lang);
	}

	return app(ForgotPasswordController::class)->sendResetLinkEmail($request);
});

In resources/views/auth/passwords/email.blade.php:

<form method="POST" action="/{{ app()->getLocale() }}/password/email">
@csrf
// ...
0 likes
2 replies
tykus's avatar

You need to override the Illuminate\Auth\Notifications\ResetPassword so the resetUrl method returns the correct URL including the $lang

ilex01's avatar
Level 5

@tykus Thanks for trying to help me.

So, Instead of:

Route::group(['prefix' => '{lang}'], function () {	
	Route::post('/password/email', function (Request $request, $lang) {
		// Vérifie si la langue est valide
		if (in_array($lang, ['en', 'fr'])) {
			// Définit la langue de l'application
			App::setLocale($lang);

			// Stocke éventuellement la langue dans la session
			Session::put('locale', $lang);
		}

		return app(ForgotPasswordController::class)->sendResetLinkEmail($request);
	});
});

I use:

Route::post('{lang}/password/email', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email'); // and it works well

Please or to participate in this conversation.