Route::group([
'prefix' => '{locale}',
'where' => ['locale' => '[a-zA-Z]{2}'],
'middleware' => 'setlocale'
], function () {
Route::get('/', function () {
return view('index');
});
Auth::routes();
});
Illuminate\Routing\Exceptions\UrlGenerationException
Missing required parameters for [Route: password.reset] [URI: {locale}/password/reset/{token}].
т.е. вот эту строчку ... изменил не ты? Или изменил, но не понял, что сделал?
Route::group([
'prefix' => '{locale}',
'where' => ['locale' => '[a-zA-Z]{2}'],
'middleware' => 'setlocale'
], function () {
Route::get('/', function () {
return view('index');
});
Auth::routes();
});
<form method="POST" action="{{ route('password.email', ['locale' => $locale, 'token' => csrf_token()]) }}" class="auth_login">
Где в коде генерация роута на сброс пароля? Если раньше она выполнялась дефолтным способом, то теперь тебе надо делать это самому.
/**
* Register the typical reset password routes for an application.
*
* @return void
*/
public function resetPassword()
{
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
$this->post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update');
}
/**
* Send a reset link to the given user.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
*/
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
// We will send the password reset link to this user. Once we have attempted
// to send the link, we will examine the response then see the message we
// need to show to the user. Finally, we'll send out a proper response.
$response = $this->broker()->sendResetLink(
$this->credentials($request)
);
return $response == Password::RESET_LINK_SENT
? $this->sendResetLinkResponse($request, $response)
: $this->sendResetLinkFailedResponse($request, $response);
}
->action(Lang::get('Reset Password'), url(config('app.url').route('password.reset', ['en', 'token' => $this->token, 'email' => $notifiable->getEmailForPasswordReset()], false)))
GET|HEAD
{locale}/password/reset/{token}
password.reset
App\Http\Controllers\Auth\ResetPasswordController@showResetForm
web
'prefix' => '{locale?}'
Route::group([
'prefix' => '{locale?}',
'where' => ['locale' => '^ru|en$']
'middleware' => 'setlocale'
], function () {
Route::get('/', function() {
return view('index');
});
Auth::routes();
});
'where' => ['locale' => '^ru|en$']
необходимость переопределить метод для отправки письма для сброса пароля всё равно остаётся
Не необходимость останется, а в данный момент ты используешь мое решение и сам не знаешь зачем поставил знак вопроса в префикс и выбрал его ответом
Ваш вариант тоже избавляет от ошибки. Спасибо
да, работает без знака вопроса.
изменения в вендоре не подходит для решения проблемы
@jazzus, значит роут password.reset не работает. А зачем пишешь что работает? Или мы не роут password.reset здесь обсуждаем?
Любым способом? Я выше предложил варианты
<input type="hidden" name="token" value="{{ request()->token }}">
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
self::setMailUsing();
}
/**
* Set a callback (override) that should be used when building the notification mail message.
*
* @return void
*/
public function setMailUsing() {
ResetPassword::toMailUsing(function ($notifiable, $token) {
return (new MailMessage)
->subject(Lang::get('reset.mail_subject'))
->greeting(Lang::get('reset.mail_greeting'))
->line(Lang::get('reset.mail_line1'))
->action(Lang::get('reset.mail_reset_action'), url(config('app.url')
.route('password.reset', [
'locale' => app()->getLocale(),
'token' => $token,
'email' => $notifiable->getEmailForPasswordReset()
],
false)))
->line(Lang::get('reset.mail_line2',
['count' => config('auth.passwords.'.config('auth.defaults.passwords').'.expire')]))
->line(Lang::get('reset.mail_line3'))
->salutation(Lang::get('reset.mail_salutation'));
});
}
@jazzus, как кастомизировать reset password написано в доках где вместо ResetPasswordNotification можно добавить свою нотификацию